Compare commits

..

42 Commits

Author SHA1 Message Date
Mario Fetka 0823ec1137 Bump version to 6.0 alpha6 2026-07-07 18:44:21 +02:00
Mario Fetka 1c4ebcccd1 Restore KF6 single instance behavior 2026-07-07 18:40:15 +02:00
Mario Fetka 9fd7e99274 Bump version to 6.0 alpha5 2026-07-06 13:58:09 +02:00
Mario Fetka bf567146d8 Clean up KF6 chat window warnings 2026-07-06 13:51:57 +02:00
Mario Fetka 3bade98d2f Harden address book updates for Escargot 2026-07-06 13:38:43 +02:00
Mario Fetka bd03359d79 Bump version to 6.0 alpha4 2026-07-06 13:21:16 +02:00
Mario Fetka 89b4218853 Handle missing Escargot profile URL 2026-07-06 13:14:56 +02:00
Mario Fetka f9f479588f Fix Escargot privacy mode mapping 2026-07-06 12:40:45 +02:00
Mario Fetka 40e81af6c6 Keep Escargot login alive without storage profile 2026-07-06 11:48:10 +02:00
Mario Fetka 10db33e21e Bump version to 6.0 alpha3 2026-07-06 09:46:58 +02:00
Mario Fetka 78cb2bc641 Port isf-qt to giflib 5 and clean build warnings 2026-07-06 09:37:59 +02:00
Mario Fetka 0c67ad480c Point roaming storage at Escargot service host 2026-07-06 08:05:06 +02:00
Mario Fetka 141bff5dd3 Bump version to 6.0 alpha2 2026-07-06 07:42:20 +02:00
Mario Fetka ae8f851b06 Fix KF6 runtime integration warnings 2026-07-06 07:37:58 +02:00
Mario Fetka 65d3f78a14 Fix contact list model teardown crash 2026-07-06 07:29:12 +02:00
Mario Fetka f2fbc7463b Port KMess to KF6 and Qt6 2026-07-06 07:16:41 +02:00
Mario Fetka 91626a9c87 Import release 2.0.6.2 2012-03-02 20:51:47 +00:00
Mario Fetka 858a70fe82 Import release 2.0.6.1 2011-02-17 09:46:29 +00:00
Mario Fetka 3200be221c Import release 2.0.6 2011-02-08 19:31:37 +00:00
Mario Fetka 452059cb18 Import release 2.0.5 2010-10-25 23:41:51 +00:00
Mario Fetka c84d96043e Import release 2.0.4 2010-07-26 08:45:10 +00:00
Mario Fetka 3179f447ce Import release 2.0.3 2010-03-10 13:51:09 +00:00
Mario Fetka 9c0c6480e3 Import release 2.0.2 2009-12-04 22:51:32 +00:00
Mario Fetka f0ec035c02 Import release 2.0.1 2009-11-30 23:30:30 +00:00
Mario Fetka dd04b72a67 Import release 2.0 2009-07-25 14:07:41 +00:00
Mario Fetka 9d0ee5010b Import release 2.0rc1 2009-07-17 15:44:01 +00:00
Mario Fetka 919dbe2a0f Import release 2.0beta2 2009-05-13 18:20:42 +00:00
Mario Fetka 8c44bbd89b Import release 1.5.2 2009-03-23 23:35:55 +00:00
Mario Fetka a899084e37 Import release 2.0beta1 2009-03-23 23:26:37 +00:00
Mario Fetka 8b3dac7ce6 Import release 2.0alpha2 2008-08-10 11:56:25 +00:00
Mario Fetka 47cc8f14fa Import release 2.0alpha 2008-05-01 22:23:21 +00:00
Mario Fetka ca041a4e14 Import release 1.5.1 2008-04-06 14:46:38 +00:00
Mario Fetka 5165abf494 Import release 1.5 2008-01-09 22:42:53 +00:00
Mario Fetka 80c63a8d5b Import CVS HEAD before SVN migration 2007-03-19 12:00:00 +00:00
Mario Fetka 41192641d3 Import release 1.5pre2 2007-03-18 19:34:31 +00:00
Mario Fetka f76ea1c06e Import CVS snapshot Release-1_5_pre1 2006-10-09 21:11:54 +00:00
Mario Fetka a20dd6cfae Import CVS snapshot Release-1_4 2005-09-01 19:51:14 +00:00
Mario Fetka 610f150858 Import CVS snapshot Release-1_4_pre1 2005-05-16 22:03:52 +00:00
Mario Fetka 559eb37e83 Import CVS snapshot Release-1_2_1 2003-08-26 13:15:15 +00:00
Mario Fetka 056589b009 Import CVS snapshot Release-1_2 2003-05-20 13:28:41 +00:00
Mario Fetka 3597973d9f Import CVS snapshot Release-1_0 2003-03-06 21:48:28 +00:00
Mario Fetka 6a3b2b68dd Import CVS snapshot Release-1_0rc1 2003-03-01 00:20:26 +00:00
946 changed files with 275177 additions and 137206 deletions
+277 -1
View File
@@ -1 +1,277 @@
Mike K. Bennett <mkb137b@hotmail.com>
-- Developers --
Mike K. Bennett <mkb137@users.sourceforge.net>
Michael Curtis <mdcurtis@users.sourceforge.net>
Jan Toenjes <jan.toenjes@web.de>
Diederik van der Boor <vdboor@codingdomain.com>
Richard Conway <richardconway@users.sourceforge.net>
Valerio Pilo <amroth@coldshock.net>
Antonio Nastasi <sifcenter@gmail.com>
Ruben Vandamme <vandammeru@gmail.com>
Sjors Gielen <dazjorz@dazjorz.com>
Adam Goossens <fontknocker@gmail.com>
-- Translations --
Translations Maintainer:
Panagiotis Papadopoulos <pano_90@gmx.net>
Arabic:
Mohamed Aser <mohasr@link.net>
Youssef Chahibi <chahibi@gmail.com>
Ma'moun Diraneyya <mamoun.diraneyya@gmail.com>
Brazilian Portuguese:
Mauricio Rother <mauricio@digicomm.com.br>
Leonel Freire <leonelfreire@gmail.com>
Sergio Rafael Lemke <bedi.com@gmail.com>
Morris Arozi Moraes
Catalan:
Jaume Cornadó <jaumec@lleida.net>
Adrià Arrufat <swiftscythe@gmail.com>
Chinese (Simplified):
Lin Haoxiang <linhaoxiang@hotmail.com>
Liu Sizhuang <chinatslsz@hotmail.com>
Cheng Yang <yangzju@gmail.com>
Chinese (Traditional):
Yen-chou Chen <yenchou.mse90@nctu.edu.tw>
Tryneeds-Chinese Translation Platform <http://tryneeds.westart.tw/tryneeds>
Danish:
Lars Sommer <admin@lasg.dk>
Pascal d'Hermilly <pascal@tipisoft.dk>
Dutch:
Arend van Beelen Jr. <arend@auton.nl>
Diederik van der Boor <vdboor@codingdomain.com>
Jaap Woldringh <jjh.woldringh@planet.nl>
Elve <elve@savage-elve.net>
Sander Pientka <cumulus0007@gmail.com>
Heimen Stoffels <vistausss@gmail.com>
Estonian:
Jyri Toomessoo <nuubik@hotmail.com>
Lauri Võsandi <v6sa@hotmail.com>
Mihkel Tõnnov <mihhkel@gmail.com>
Rivo Laks <rivolaks@hot.ee>
Timo Tambet <ttambet@gmail.com>
Finnish:
Markus Vuori <markus@vuoret.net>
Joonas Niilola <juippis@roskakori.org>
Jussi Timperi <jussi.timperi@gmail.com>
Antony Hussi <antony.hussi@tranciend.com>
Marko Mäkilä <maruchan86@gmail.com>
French:
Choplair <pachilor@yahoo.co.jp>
Vincent Fretin <fretinvincent@hotmail.com>
Andrea Blankenstijn <darkan9el@gmail.com>
Barthe Guillaume <gu_barthe@yahoo.fr>
Scias <shining.scias@gmail.com>
Grégory Bellier <gregory.bellier@gmail.com>
Anthony Rey <gnuk@mailoo.org>
Galician:
Indalecio Freiría Santos <ifreiria@gmail.com>
German:
Jan Tönjes <jan.toenjes@web.de>
Panagiotis Papadopoulos <pano_90@gmx.net>
Greek:
Panagiotis Papadopoulos <pano_90@gmx.net>
Dimitrios Glentadakis <dglent@gmail.com>
George Kiagiadakis <kiagiadakis.george@gmail.com>
Hungarian:
Páder Rezső <rezso@rezso.net>
Pauli Henrik <henrik.pauli@drangolin.net>
Italian:
David Vignoni <dvgn@libero.it>
Valerio Pilo <amroth@coldshock.net>
Vincenzo Reale <smart2128@baslug.org>
Andrea Decorte <adecorte@gmail.com>
Japanese:
Daniel E. Moctezuma <dmoctezuma@kmess.org>
Korean:
Park Dong Cheon <pdc@kaist.ac.kr>
Norsk Bokmal:
Øyvind Sæther <oyvind@sather.tk>
Portuguese:
Bruno Almeida <bruno.r.almeida@gmail.com>
Russian:
Dmitriy Simbiriatin <slpiv@mail.ru>
Serbian:
Zoran Milovanović <provalisam@gmail.com>
Slovak:
Rastislav Krupanský <ra100@atlas.sk>
Slovenian:
Matjaž Kaše <kase@g-kabel.si>
Spanish:
Johanna Gersch
J.C.A. Javi <yovoya30ks@hotmail.com>
Alejandro Araiza Alvarado <mebrelith@gmail.com>
Jaume Corbí <jaume4@gmail.com>
Christian Kaiser <k39@users.sourceforge.net>
Juan Pablo González Tognarelli <jotapesan@gmail.com>
Alexis Daniel Medina Medina <alexismedina@gmail.com>
Manuel Ramírez <elpreto@kde.org.ar>
Mauricio Muñoz Lucero <real.mml@gmail.com>
Swedish:
Christian Lundgren <zeflunk@gmail.com>
Mattias Newzella <newzella@gmail.com>
Thai:
Rachan Hongpairote <rachanh@yahoo.com>
Turkish:
Gorkem Cetin <gorkem@gelecek.com.tr>
Barbaros Ulutas <tebarul@yahoo.com>
Uğur Çetin <ugur.jnmbk@gmail.com>
-- Thanks to --
Jan Tönjes <jan.toenjes@web.de>
- testing, documentation, web master, project management, etc
Dane Harnett <dynamitedane@hotmail.com>
- web design
David Vignoni <dvgn@libero.it>
- the main yellow/blue/violet emoticon sets
Laurence Anderson <l.d.anderson@warwick.ac.uk>
- original file receive code
Scott Morgan <blumf@blumf.freeserve.co.uk>
- Xinerama fixes
Julien Joubin <jujubinche@netscape.net>
- Cartoon emoticons
Christian Muller <cmue81@gmx.de>
- Default sound theme
Choe Hwanjin <hjchoe@hancom.com>
- Various internationalization fixes.
Vincent Fretin <fretinvincent@hotmail.com>
- MSN6 emoticon definitions
Lin Haoxiang <linhaoxiang@hotmail.com>
- Send file bugfix, proxy code
Tobias Tönjes
- Guy with a bag over his head
Damien Sandras <dsandras@seconix.com>
- GnomeMeeting developer
Liu Sizhuang <chinatslsz@hotmail.com>
- P4-Context field support
Guido Solinas <whereismwhite@gmail.com>
- Pictures in contact list code
- Contact client info
- Chat font zoom
Pedro Ferreira <pedro.ferreira@fe.up.pt>
- File transfer thumbnails
Matteo Nardi <91.matteo@gmail.com>
- KWallet support
Andrea Decorte <adecorte@gmail.com>
- Group selection in 'contact added user' dialog
Dario Freddi <drf_av@users.sourceforge.net>
- Chat history dialog
Camille Begue <prsieux@gmail.com>
- Chat History functionality when disconnected from MSN
- Automatic login checkbox on initialview
David López <grannost@gmail.com>
- Nudge button in chat
Pieterjan Camerlynck <pieterjan.camerlynck@gmail.com>
- Roaming Service support
Anastasios Bourazanis <a.brzns@gmail.com>
- Emoticon preview in settings page
- Clickable contact properties dialog text
Marco Mentasti <marcomentasti@gmail.com>
- Internationalization fixes
- Drag'n'drop of images into display pictures
Francesco Nwokeka
- Now Listening toggle button above the contact list.
Timo Tambet <ttambet@gmail.com>
- Contact Changed and Group Changed notifications.
- Contact added user dialog tabbing
KMerlin <http://kmerlin.olsd.de/>
- Inspiration and assorted code
Kopete <http://kopete.kde.org/>
- Old Popup Balloon code
- Initial p2p code
- MSN Challenge handler
KScreensaver
- Idle timer code
BasKet
- Close-to-tray icon screenshot code
Amarok
- Custom crash handler implementation
- System tray icon overlay implementation
Quassel
- KNotify not giving focus bug fix and KWin focus stealing prevention workaround
+101
View File
@@ -0,0 +1,101 @@
cmake_minimum_required(VERSION 3.16)
project(kmess VERSION 6.0.0 LANGUAGES C CXX)
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
${ECM_MODULE_PATH}
${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(BUILD_WITH_QT6 ON CACHE BOOL "Build against Qt 6" FORCE)
set(QT_DEFAULT_MAJOR_VERSION 6)
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat DBus Gui Multimedia Network Test WebEngineWidgets Widgets Xml)
find_package(KF6 REQUIRED COMPONENTS
Codecs
Completion
Config
ConfigWidgets
CoreAddons
Crash
DBusAddons
IdleTime
I18n
IconThemes
KIO
Notifications
NotifyConfig
Parts
Service
Solid
StatusNotifierItem
TextWidgets
WidgetsAddons
WindowSystem
Wallet
XmlGui
)
find_package(LibXml2 REQUIRED)
find_package(LibXslt REQUIRED)
find_package(GCrypt REQUIRED)
set(ISFQT_IS_BUNDLED TRUE)
set(USE_BUNDLED_LIBRARIES ISFQT)
add_subdirectory(contrib/isf-qt)
option(KMESS_DISABLE_LIKEBACK "Disable the old LikeBack feedback UI" ON)
if(KMESS_DISABLE_LIKEBACK)
set(KMESS_DISABLE_LIKEBACK 1)
else()
set(KMESS_DISABLE_LIKEBACK 0)
endif()
set(KMESS_VERSION "6.0_alpha6")
set(KMESS_ENABLE_DEBUG_OUTPUT 0)
set(KMESS_BUILT_DEBUGFULL FALSE)
set(HAVE_LIBISFQT 1)
set(HAVE_NEW_TRAY 1)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050F00 -DQT_NO_URL_CAST_FROM_STRING)
# Compatibility variables kept for old subdirectory install rules while the
# source tree is being ported away from KDE4-era CMake.
set(BIN_INSTALL_DIR ${KDE_INSTALL_BINDIR})
set(CONFIG_INSTALL_DIR ${KDE_INSTALL_CONFDIR})
set(DATA_INSTALL_DIR ${KDE_INSTALL_DATADIR})
set(HTML_INSTALL_DIR ${KDE_INSTALL_DOCBUNDLEDIR})
set(ICON_INSTALL_DIR ${KDE_INSTALL_ICONDIR})
set(LOCALE_INSTALL_DIR ${KDE_INSTALL_LOCALEDIR})
set(PLUGIN_INSTALL_DIR ${KDE_INSTALL_PLUGINDIR})
set(SERVICES_INSTALL_DIR ${KDE_INSTALL_KSERVICESDIR})
set(SHARE_INSTALL_PREFIX ${KDE_INSTALL_DATADIR})
set(SOUND_INSTALL_DIR ${KDE_INSTALL_SOUNDDIR})
set(XDG_APPS_INSTALL_DIR ${KDE_INSTALL_APPDIR})
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/config-kmess.h.in
${CMAKE_CURRENT_BINARY_DIR}/config-kmess.h)
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${LIBXML2_INCLUDE_DIR}
${LIBXSLT_INCLUDE_DIR}
${GCRYPT_INCLUDE_DIRS}
)
add_subdirectory(po)
add_subdirectory(data)
add_subdirectory(src)
+165
View File
@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
+6297 -2
View File
File diff suppressed because it is too large Load Diff
+260
View File
@@ -0,0 +1,260 @@
# Doxyfile 1.5.5-KDevelop
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = KMess
PROJECT_NUMBER = 2.0.6.2
OUTPUT_DIRECTORY = ./apidocs
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 2
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
TYPEDEF_HIDES_STRUCT = NO
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = YES
EXTRACT_ANON_NSPACES = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = YES
SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = NO
SHOW_DIRECTORIES = NO
SHOW_FILES = YES
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = YES
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ./src
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.cpp \
*.h \
*.dox
RECURSIVE = YES
EXCLUDE = *.moc \
*.moc.cpp \
*.moc.h
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = */build*/*
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCES_LINK_SOURCE = YES
USE_HTAGS = NO
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 4
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER = doc/apidocs_header.html
HTML_FOOTER = doc/apidocs_footer.html
HTML_STYLESHEET = doc/doxygen.css
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
HTML_DYNAMIC_SECTIONS = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = YES
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NONE
TREEVIEW_WIDTH = 250
FORMULA_FONTSIZE = 10
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED = KMESSTEST \
KMESS_NETWORK_WINDOW
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE = kmess.tag
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
DOT_FONTNAME = FreeSans
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = NO
CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = NO
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = YES
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
+114
View File
@@ -0,0 +1,114 @@
KMess Feature list
========================
- 2.0.3 -
Setting your friendly name and personal message by clicking on their labels in the contact list.
A display of the unread email count in the system tray tooltip.
Ability to change personal message using DBus.
- 2.0.2 -
Enabled drag-and-drop of images into display picture frames.
- 2.0.1 -
Synchronization of friendly names, personal messages and display pictures with Messenger.
Support to send screenshots by dragging and dropping them to a chat.
Custom emoticon preview in the settings.
Chat window buttons to change message font and color.
- 2.0 -
Support to receive and send Ink (hand-written) messages.
Support to send huge messages.
Options to copy a contact's email, name, message, listened music and links present in the name/message
List of contact events, such as logins and logouts.
Chat Windows can be used again when reconnecting.
Quick retype of previous sent messages, using Ctrl+Up/Ctrl+Down.
MSN connections over HTTP, to deal with corporate firewalls which only allow connections to browse the web.
Support to chat with offline and invisible contacts.
Support to search in the contact list.
Support to send bigger chat messages.
Option to choose the browser used to open web sites, Live Mail, and MSN support sites.
Option to manually send commands to the server in developer builds.
Support to group all chats in the same chat window (tabbed chatting).
Option to select a directory where all received files will be put.
Option to choose the interval of ports used for fast file transfers.
Option to keep short notes for each contact.
Support to MSN Plus text formatting.
Support for DBus remote application control.
Option to choose a previously chosen display picture.
Support for dark KDE color schemes.
More options to improve customization of the Contact List.
Support for KDE's KWallet, to store in a secure way the accounts passwords.
Automatic detection of network connection and disconnection.
Option to block notifications when the status is set to Busy.
Option to disable displaying of received winks.
Automatic reconnection to MSN after unwanted disconnections.
- 1.5.1 -
Contact's MSN client detection.
Option to view contacts' Display Pictures in the contact list.
Option to enable spell checking in the chat windows.
Disable notification popups when there's a screen saver or a full screen application.
Added option to manually set your own MSN status to Idle.
When closing KMess to tray for the first time, a little screenshot of the notification area will help finding KMess' tray icon.
- 1.5 -
Support to exchange (send and receive) custom emoticons and nudges.
Receive-only support for winks and offline-im messages.
Fast file transfers, supporting MSN6+ direct connections.
MSN7 personal status messages are supported.
The appearance of chat message and emoticons can be changed on the fly.
Users with a temporary "guest" account can upgrade to a regular "stored" account.
Messages from the same contact can be grouped.
New default chat style, 'Fresh', making chats more colorful and friendly.
Now listening information can be exchanged.
New KDE style balloon notification popups.
Right-click options for links in the chat window.
Improved and more compact visual style for the chat windows.
Automatically download the display pictures of your contacts.
Option to select an image to use as display picture and to then crop unneeded parts away.
- 1.4 -
MSN6 display picture transfers are supported
MSN6 file transfer is supported (receiving only)
Taskbar flashes with new messages
A new dialog for file transfers
MSN Messenger SSL-signon compatibility (again)
- 1.3 -
A new freestyle chat formatting method that gives users greater freedom in how they want chat messages to look.
Contact tooltip contains name and e-mail
MSN Messenger SSL-signon compatibility
- 1.2 -
Users can start as invisible rather than online.
Users can have blank, unsaved passwords but retain user settings.
Text can be formatted with /, _, and *.
Groups can be reordered.
You can show or hide offline contacts.
Emoticons are shown in the contact list
Contacts can be dragged to move between groups and dragged into a chat to be invited to it.
- 1.1 and older -
NetMeeting<->GnomeMeeting and GnomeMeeting<->GnomeMeeting invitations are supported.
MSN Messenger protocol compatibility
Font and font color support, including the ability to force contact messages to appear in a particular font and color.
Full emoticon support, featuring a custom GPLed emoticon set and the ability to use different emoticon themes.
File transfer support, both sending and receiving.
Hotmail support, with new email notifications, the inbox count, and the ability to open Hotmail at the user's inbox or at the composition page.
The ability to disable and hide email information for accounts that don't use Hotmail.
Support for multiple user profiles.
Autologging, either at the setting page for from the commandline (with "kmess --autologin blah@hotmail.com" for example).
A contact list that can organize contacts by group or by online/offline status.
Groups show a count of the contacts online (i.e. "Friends (2/5)")
The user can specify particular contact images and sounds to be displayed when a contact comes online or in a chat.
The user can specify a name for a contact, overriding the contact's specified name.
The user can choose on a contact-by-contact basis whether the user should be notified when a particular contact comes online or goes offline.
KMess can show a contact's MSN profile, and open the MSN search pages.
In addition to the usual user statuses of "Away" and "Busy" and so on, there is the status "Away with Autoreply" that will reply to contact's chat messages with a user-specified away message.
The chat window has been redesigned with a new sidebar (which can be toggled with Ctrl+T) with an emphasis on contact images.
The chat window notifies the user that a contact is typing by "glowing" the contact's image.
Chats can be logged automatically and the chats ordered in subdirectories by day, week, or month, or not ordered at all.
Chats can be configured to show timestamps when contacts send messages.
A "compact" chat format can be used to remove extraneous line breaks and reduce the size of the chat.
The chat window caption in the taskbar alternates between lower and upper case to inform the user of a received message when the window is not on top.
Internationalization support, with translations in: English, Dutch, German, Italian, Portuguese, Spanish, Turkish, Chinese, French, Catalan, Arabic, Korean, Norsk, Thai, Danish, and Estonian
There is now a method, though not absolute, to tell if a contact is blocking you. If a chat is started with a contact that appears offline, you will be informed if the contact is offline or online and blocking you.
+53 -159
View File
@@ -1,167 +1,61 @@
Basic Installation
Installation Hints:
===================
NOTE: This package is used to build KMess from source code.
If you're looking for a simple way to install KMess,
take a look at http://www.kmess.org/download/.
NOTE: These instructions are meant for UNIX-like systems. If they don't
work for you, please tell us at http://www.kmess.org/board/.
For building on Windows, see this Wiki page:
http://trac.kmess.org/wiki/Compiling%20KMess%20for%20Windows
To install KMess from this source package you need to create a separate
build directory first. It must be created outside the source folder. After
that, you must configure your build using cmake.
To ease the building process, KMess comes with a 'configure' script that
creates the directory and runs CMake for you. To build this package, simply
run:
cd kmess
./configure
make
To install on most systems, you can run:
sudo make install
If your system doesn't come with sudo, you can use:
su -c 'make install'
That's it!
Of course, building without the configure script is also possible:
mkdir build
cd build
cmake ..
make
sudo make install
Useful parameters:
==================
These are generic installation instructions.
The configure script automatically makes the right build for you. For a release (non-alpha or beta)
package, the configure script builds KMess in release mode; for an alpha or beta package, KMess will
run in debug mode. When something goes wrong, debug mode will help us find the cause, and fix it. :-)
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 want to modify your build, you can try the following options to the configure script:
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.
--prefix=/usr
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'.
Install in the /usr directory instead.
The simplest way to compile this package is:
--build-type=(one of debug,debugfull,release,relwithdebuginfo,minsizerel)
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 a while. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Type `make install' to install the programs and any data files and
documentation.
4. You can remove the program binaries and object files from the
source code directory by typing `make clean'.
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.
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.
`--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.
Tell CMake to build this specific build type.
Also consider running "ccmake" for an curses-interface to cmake.
ccmake only works after the build directory has been configured with cmake before.
-29
View File
@@ -1,29 +0,0 @@
####### kdevelop will overwrite this part!!! (begin)##########
SUBDIRS = kmess po doc
EXTRA_DIST = kmess.kdevprj admin AUTHORS COPYING ChangeLog INSTALL README TODO kmess.lsm
####### kdevelop will overwrite this part!!! (end)############
# not a GNU package. You can remove this line, if
# have all needed files, that a GNU package needs
AUTOMAKE_OPTIONS = foreign
$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ;
$(top_srcdir)/subdirs:
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs
$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in
@cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4
MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files
package-messages:
$(MAKE) -f admin/Makefile.common package-messages
$(MAKE) -C po merge
dist-hook:
cd $(top_distdir) && perl admin/am_edit -padmin
cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs
-14
View File
@@ -1,14 +0,0 @@
all:
@echo "This Makefile is only for the CVS repository"
@echo "This will be deleted before making the distribution"
@echo ""
@if test ! -d admin; then \
echo "Please recheckout this module!" ;\
echo "for cvs: use checkout once and after that update again" ;\
echo "for cvsup: checkout kde-common from cvsup and" ;\
echo " link kde-common/admin to ./admin" ;\
exit 1 ;\
fi
$(MAKE) -f admin/Makefile.common cvs
.SILENT:
-646
View File
@@ -1,646 +0,0 @@
# Makefile.in generated automatically by automake 1.5 from Makefile.am.
# KDE tags expanded automatically by am_edit - $Revision: 1.1.1.1 $
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
####### kdevelop will overwrite this part!!! (begin)##########
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_alias = @build_alias@
build_triplet = @build@
host_alias = @host_alias@
host_triplet = @host@
target_alias = @target_alias@
target_triplet = @target@
AMTAR = @AMTAR@
ARTSCCONFIG = @ARTSCCONFIG@
AS = @AS@
AUTODIRS = @AUTODIRS@
AWK = @AWK@
CC = @CC@
CONF_FILES = @CONF_FILES@
CPP = @CPP@
CXX = @CXX@
CXXCPP = @CXXCPP@
DCOPIDL = @DCOPIDL@
DCOPIDL2CPP = @DCOPIDL2CPP@
DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
DOXYGEN_PROJECT_NAME = @DOXYGEN_PROJECT_NAME@
DOXYGEN_PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@
DPMSINC = @DPMSINC@
DPMSLIB = @DPMSLIB@
ECHO = @ECHO@
EXEEXT = @EXEEXT@
FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
GCJ = @GCJ@
GCJFLAGS = @GCJFLAGS@
GLINC = @GLINC@
GLLIB = @GLLIB@
GMSGFMT = @GMSGFMT@
IDL = @IDL@
IDL_DEPENDENCIES = @IDL_DEPENDENCIES@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAR = @JAR@
JAVAC = @JAVAC@
JAVAH = @JAVAH@
JVMLIBS = @JVMLIBS@
KDECONFIG = @KDECONFIG@
KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
KDE_HAS_DOXYGEN = @KDE_HAS_DOXYGEN@
KDE_HAVE_DOT = @KDE_HAVE_DOT@
KDE_INCLUDES = @KDE_INCLUDES@
KDE_LDFLAGS = @KDE_LDFLAGS@
KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
KDE_MT_LIBS = @KDE_MT_LIBS@
KDE_PLUGIN = @KDE_PLUGIN@
KDE_RPATH = @KDE_RPATH@
KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
LEX = @LEX@
LEXLIB = @LEXLIB@
LIBCOMPAT = @LIBCOMPAT@
LIBCRYPT = @LIBCRYPT@
LIBDL = @LIBDL@
LIBGEN = @LIBGEN@
LIBJPEG = @LIBJPEG@
LIBMICO = @LIBMICO@
LIBOBJS = @LIBOBJS@
LIBPNG = @LIBPNG@
LIBPTHREAD = @LIBPTHREAD@
LIBPYTHON = @LIBPYTHON@
LIBQIMGIO = @LIBQIMGIO@
LIBRESOLV = @LIBRESOLV@
LIBSHADOW = @LIBSHADOW@
LIBSM = @LIBSM@
LIBSOCKET = @LIBSOCKET@
LIBTIFF = @LIBTIFF@
LIBTOOL = @LIBTOOL@
LIBUCB = @LIBUCB@
LIBUTIL = @LIBUTIL@
LIBXINERAMA = @LIBXINERAMA@
LIBZ = @LIBZ@
LIB_KAB = @LIB_KAB@
LIB_KDECORE = @LIB_KDECORE@
LIB_KDEPRINT = @LIB_KDEPRINT@
LIB_KDEUI = @LIB_KDEUI@
LIB_KFILE = @LIB_KFILE@
LIB_KFM = @LIB_KFM@
LIB_KHTML = @LIB_KHTML@
LIB_KIMGIO = @LIB_KIMGIO@
LIB_KIO = @LIB_KIO@
LIB_KPARTS = @LIB_KPARTS@
LIB_KSPELL = @LIB_KSPELL@
LIB_KSYCOCA = @LIB_KSYCOCA@
LIB_POLL = @LIB_POLL@
LIB_QPE = @LIB_QPE@
LIB_QT = @LIB_QT@
LIB_QTOPIA = @LIB_QTOPIA@
LIB_SMB = @LIB_SMB@
LIB_X11 = @LIB_X11@
LIB_XEXT = @LIB_XEXT@
LN_S = @LN_S@
MCOPIDL = @MCOPIDL@
MEINPROC = @MEINPROC@
MICO_INCLUDES = @MICO_INCLUDES@
MICO_LDFLAGS = @MICO_LDFLAGS@
MOC = @MOC@
MSGFMT = @MSGFMT@
NOOPT_CFLAGS = @NOOPT_CFLAGS@
NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
NOREPO = @NOREPO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PAMLIBS = @PAMLIBS@
PASSWDLIBS = @PASSWDLIBS@
PYTHONINC = @PYTHONINC@
PYTHONLIB = @PYTHONLIB@
PYTHONMODDIR = @PYTHONMODDIR@
QTDOCDIR = @QTDOCDIR@
QTE_NORTTI = @QTE_NORTTI@
QTOPIA_INCLUDES = @QTOPIA_INCLUDES@
QT_INCLUDES = @QT_INCLUDES@
QT_LDFLAGS = @QT_LDFLAGS@
RANLIB = @RANLIB@
RC = @RC@
REPO = @REPO@
SETUIDFLAGS = @SETUIDFLAGS@
STRIP = @STRIP@
TOPSUBDIRS = @TOPSUBDIRS@
UIC = @UIC@
UIC_TR = @UIC_TR@
USER_INCLUDES = @USER_INCLUDES@
USER_LDFLAGS = @USER_LDFLAGS@
USE_EXCEPTIONS = @USE_EXCEPTIONS@
USE_RTTI = @USE_RTTI@
USE_THREADS = @USE_THREADS@
VERSION = @VERSION@
WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
XGETTEXT = @XGETTEXT@
XPMINC = @XPMINC@
XPMLIB = @XPMLIB@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_INCLUDES = @X_INCLUDES@
X_LDFLAGS = @X_LDFLAGS@
X_PRE_LIBS = @X_PRE_LIBS@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__include = @am__include@
am__quote = @am__quote@
idldir = @idldir@
install_sh = @install_sh@
jni_includes = @jni_includes@
kde_appsdir = @kde_appsdir@
kde_bindir = @kde_bindir@
kde_confdir = @kde_confdir@
kde_datadir = @kde_datadir@
kde_htmldir = @kde_htmldir@
kde_icondir = @kde_icondir@
kde_includes = @kde_includes@
kde_libraries = @kde_libraries@
kde_libs_htmldir = @kde_libs_htmldir@
kde_libs_prefix = @kde_libs_prefix@
kde_locale = @kde_locale@
kde_mimedir = @kde_mimedir@
kde_moduledir = @kde_moduledir@
kde_qtver = @kde_qtver@
kde_servicesdir = @kde_servicesdir@
kde_servicetypesdir = @kde_servicetypesdir@
kde_sounddir = @kde_sounddir@
kde_styledir = @kde_styledir@
kde_templatesdir = @kde_templatesdir@
kde_wallpaperdir = @kde_wallpaperdir@
kde_widgetdir = @kde_widgetdir@
micodir = @micodir@
qt_includes = @qt_includes@
qt_libraries = @qt_libraries@
x_includes = @x_includes@
x_libraries = @x_libraries@
SUBDIRS = kmess po doc
EXTRA_DIST = kmess.kdevprj admin AUTHORS COPYING ChangeLog INSTALL README TODO kmess.lsm
####### kdevelop will overwrite this part!!! (end)############
# not a GNU package. You can remove this line, if
# have all needed files, that a GNU package needs
AUTOMAKE_OPTIONS = foreign
MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
DIST_SOURCES =
RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
uninstall-info-recursive all-recursive install-data-recursive \
install-exec-recursive installdirs-recursive install-recursive \
uninstall-recursive check-recursive installcheck-recursive
DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
Makefile.am Makefile.in TODO acinclude.m4 aclocal.m4 \
admin/ChangeLog admin/config.guess admin/config.sub \
admin/depcomp admin/install-sh admin/ltmain.sh admin/missing \
admin/mkinstalldirs admin/ylwrap config.h.in configure \
configure.in
DIST_SUBDIRS = $(SUBDIRS)
#>- all: config.h
#>+ 1
all: docs-am config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
#>- cd $(top_srcdir) && \
#>- $(AUTOMAKE) --foreign Makefile
#>+ 3
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
cd $(top_srcdir) && perl admin/am_edit Makefile.in
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && \
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=$@ $(SHELL) ./config.status
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): configure.in acinclude.m4
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h
@if test ! -f $@; then \
rm -f stamp-h; \
$(MAKE) stamp-h; \
else :; fi
stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h stamp-hT
@echo timestamp > stamp-hT 2> /dev/null
cd $(top_builddir) \
&& CONFIG_FILES= CONFIG_HEADERS=config.h \
$(SHELL) ./config.status
@mv stamp-hT stamp-h
$(srcdir)/config.h.in: $(srcdir)/./stamp-h.in
@if test ! -f $@; then \
rm -f $(srcdir)/./stamp-h.in; \
$(MAKE) $(srcdir)/./stamp-h.in; \
else :; fi
$(srcdir)/./stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4)
@rm -f $(srcdir)/./stamp-h.in $(srcdir)/./stamp-h.inT
@echo timestamp > $(srcdir)/./stamp-h.inT 2> /dev/null
cd $(top_srcdir) && $(AUTOHEADER)
@mv $(srcdir)/./stamp-h.inT $(srcdir)/./stamp-h.in
distclean-hdr:
-rm -f config.h
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique $(LISP)
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
|| etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP)
GTAGS:
here=`CDPATH=: && cd $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
#>+ 4
KDE_DIST=subdirs configure.files kmess.kdevses Makefile.dist configure.in.in
DISTFILES= $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
top_distdir = .
# Avoid unsightly `./'.
distdir = $(PACKAGE)-$(VERSION)
GZIP_ENV = --best
distdir: $(DISTFILES)
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
mkdir $(distdir)
$(mkinstalldirs) $(distdir)/admin
@for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
$(mkinstalldirs) "$(distdir)/$$dir"; \
fi; \
if test -d $$d/$$file; then \
cp -pR $$d/$$file $(distdir) \
|| exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
for subdir in $(SUBDIRS); do \
if test "$$subdir" = .; then :; else \
test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \
|| exit 1; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$(top_distdir)" \
distdir=../$(distdir)/$$subdir \
distdir) \
|| exit 1; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="${top_distdir}" distdir="$(distdir)" \
dist-hook
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
chmod a-w $(distdir)
dc_install_base=`CDPATH=: && cd $(distdir)/=inst && pwd` \
&& cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& (test `find $$dc_install_base -type f -print | wc -l` -le 1 \
|| (echo "Error: files left after uninstall" 1>&2; \
exit 1) ) \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& $(MAKE) $(AM_MAKEFLAGS) distclean \
&& rm -f $(distdir).tar.gz \
&& (test `find . -type f -print | wc -l` -eq 0 \
|| (echo "Error: files left after distclean" 1>&2; \
exit 1) )
-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
@echo "$(distdir).tar.gz is ready for distribution" | \
sed 'h;s/./=/g;p;x;p;x'
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
#>- clean: clean-recursive
#>+ 1
clean: kde-rpo-clean clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
dist-all: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
distclean: distclean-recursive
-rm -f config.status config.cache config.log
distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \
distclean-tags
dvi: dvi-recursive
dvi-am:
info: info-recursive
info-am:
install-data-am:
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
clean-generic clean-libtool clean-recursive dist dist-all \
distcheck distclean distclean-generic distclean-hdr \
distclean-libtool distclean-recursive distclean-tags distdir \
dvi dvi-am dvi-recursive info info-am info-recursive install \
install-am install-data install-data-am install-data-recursive \
install-exec install-exec-am install-exec-recursive \
install-info install-info-am install-info-recursive install-man \
install-recursive install-strip installcheck installcheck-am \
installdirs installdirs-am installdirs-recursive \
maintainer-clean maintainer-clean-generic \
maintainer-clean-recursive mostlyclean mostlyclean-generic \
mostlyclean-libtool mostlyclean-recursive tags tags-recursive \
uninstall uninstall-am uninstall-info-am \
uninstall-info-recursive uninstall-recursive
$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ;
$(top_srcdir)/subdirs:
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs
$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in
@cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4
package-messages:
$(MAKE) -f admin/Makefile.common package-messages
$(MAKE) -C po merge
dist-hook:
cd $(top_distdir) && perl admin/am_edit -padmin
cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
#>+ 2
docs-am:
#>+ 6
force-reedit:
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
cd $(top_srcdir) && perl admin/am_edit Makefile.in
#>+ 2
final:
$(MAKE) all-am
#>+ 2
final-install:
$(MAKE) install-am
#>+ 2
no-final:
$(MAKE) all-am
#>+ 2
no-final-install:
$(MAKE) install-am
#>+ 3
cvs-clean:
$(MAKE) admindir=$(top_srcdir)/admin -f $(top_srcdir)/admin/Makefile.common cvs-clean
#>+ 3
kde-rpo-clean:
-rm -f *.rpo
+820
View File
@@ -0,0 +1,820 @@
Changes between KMess Git and 2.0.6.2:
--------------------------------------
- None yet
Changes between KMess 2.0.6.2 and 2.0.6.1:
------------------------------------------
- Follow redirects, fixing connection issue. Thanks to Lekensteyn.
- Moved file transfer settings into own tab.
- updated Japanese translation by Daniel E. Moctezuma.
Changes between KMess 2.0.6.1 and 2.0.6:
----------------------------------------
- fix bug where KMess couldn't login due to missing language preference information.
Changes between KMess 2.0.6 and 2.0.5:
--------------------------------------
- fix bug where KMess couldn't login due to badly formed URL commands.
- fixed crash when taking any action in the Contact Added User dialog.
- fixed a possible crash when using the Contact Added User dialog.
- Added a fading effect when switching between the initial view and the contact list.
- fixed retrieval of display pictures from online MSN storage.
- fixed a problem where roaming service profile data was invalid.
- fixed "Visit Link" context-menu icon in chat. Thanks to IRC's agostino.
- improved Contact Added User dialog with tabs. Thanks ti Timo Tambet.
- updated Japanese translation by Daniel E. Moctezuma.
- updated Spanish translation by Daniel E. Moctezuma.
- updated German translation.
Changes between KMess 2.0.5 and 2.0.4:
--------------------------------------
- added Chat History integration with the Chat Window, with a menu item, toolbar
action, and a context menu item.
- added KDE notifications for contact and group changes (Patch by Timo Tambet).
- fixed a crash due to changes by Microsoft in how Offline Messages are sent.
- fixed a possible crash during login.
- fixed a crash when closing a chat window.
- fixed logging in with long passwords (17+ characters). MSN cuts them to 16, hehehe.
- removed all HTML from KDE notifications to fix weird text cutting problems.
- updated French translation by Anthony Rey.
- updated Estonian translation by Timo Tambet.
- updated Hungarian translation by József Makay.
- updated Traditional Chinese translation by Yen-chou Chen.
Changes between KMess 2.0.4 and 2.0.3:
--------------------------------------
- added a tip text on the contact list's search bar (Patch by Timo Tambet).
- added support for a new ISF-Qt feature, PNG fortification, allowing to drag
and drop handwriting drawings into the message editor to be edited.
- added support for notifications on the Mac.
- added a toggle button for Now Listening to the contact list (Patch by Francesco Nwokeka).
- added Galician translation by Indalecio Freiría Santos.
- fixed invalid characters in contact frame tooltips.
- fixed "Contact Added User" dialog pop-ups, appearing for already added contacts.
- fixed the application icon resolution.
- fixed log in failure, due to a mismanaged remote display picture reception.
- fixed URL when retrieving display pictures from MSN.
- fixed saving account properties.
- fixed removal and blocking of contacts.
- fixed saving the automatic login option.
- fixed status changing bugs when disconnecting or waking up from sleep.
- improved compatibility with KDE 4.5.
- improved the Chat History dialog, now using a calendar to list dates with available chat logs.
- improved contact list sorting, now done by status, then alphabetically (Patch by dah_ at the boards).
- improved management of unknown contacts.
- improved widget sizes and behavior on the contact list.
- updated the system tray widget to the new KDE 4.3+ one.
- updated Japanese translation by Daniel E. Moctezuma.
- updated Dutch translation by Heimen Stoffels.
- updated German translation by Panagiotis Papadopoulos.
- updated Catalan translation by Adrià Arrufat.
- updated Traditional Chinese translation by the Tryneeds-Chinese Translation Platform.
- updated French translation by Grégory Bellier.
- updated Brazilian Portuguese translation by Morris Arozi Moraes.
- updated Traditional Chinese translation by Yen-chou Chen.
Changes between KMess 2.0.3 and 2.0.2:
--------------------------------------
- added ability to drag-and-drop images into display picture frames.
- added setting friendly name and personal message by clicking on their labels in the contact list.
- added Russian translation by Dmitriy Simbiriatin.
- added Portuguese translation by Bruno Almeida.
- added showing unread email count in the system tray tooltip.
- added setting personal message using DBus.
- fixed crash when logging in with the wrong password.
- fixed bug causing the "Contact Added User" dialog to appear after deleting contacts.
- fixed bug causing the chat window size to not be saved under KDE 4.4.
- improved performance when drawing complex ink messages.
- improved proxy support.
- updated French translation by Grégory Bellier.
- updated Catalan translation by Adrià Arrufat.
- updated German translation by Panagiotis Papadopoulos.
- updated Greek translation by Dimitrios Glentadakis.
- updated Brazilian Portuguese translation by Morris Arozi Moraes.
- updated Traditional Chinese translation by Yen-chou Chen.
- updated Dutch translation by Sjors Gielen.
- updated Dutch translation by Heimen Stoffels.
- updated Hungarian translation by Pauli Henrik.
- updated Spanish translation by Mauricio Muñoz Lucero.
- updated Turkish translation by Uğur Çetin.
- updated Estonian translation by Rivo Laks.
- updated Traditional Chinese translation by Yen-chou Chen.
- updated Japanese translation by Daniel E. Moctezuma.
- updated Slovak translation by Rastislav Krupanský.
Changes between KMess 2.0.2 and 2.0.1:
--------------------------------------
- fixed a bug that was introduced just before the release of KMess 2.0.1,
making it impossible to login twice in the same KMess session.
- updated Japanese translation by Daniel E. Moctezuma.
- updated Brazilian Portuguese translation by Maurício Arozi Moraes.
Changes between KMess 2.0.1 and 2.0:
--------------------------------------
- added a "Log in automatically" checkbox to the initial view (patch by Camille Begue).
- added ability to open the chat history dialog when not connected (patch by Camille Begue).
- added Test Server support.
- added shortcut checking of added/edited emoticons for invalid characters.
- added usage of smooth pixmap scaling for display pictures in the contact list.
- added caching of scaled display pictures when painting the contact list.
Mitigates performance hit caused by using smooth pixmap scaling.
- added full Handwriting support, thanks to the ISF-Qt external library.
- added Roaming content support: display picture, friendly name and personal
message are now synchronized with those used in Messenger.
- added chat window buttons to quickly change message font and color.
- added ability to drag-and-drop an image from KSnapshot (or any drag'n'drop-enabled
image application) to a chat, to send it.
- added preview of emoticons in emoticon settings page.
- fixed improper scaling of the display picture in the chat window and contact list.
- fixed maximum emoticon shortcut length.
- fixed "close all tabs" dialog: Don't show it when the KDE session is closing.
- fixed a crash in NetworkWindow when receiving P2P messages shorter than
the usual.
- fixed an overzealousness of the IRC-like commands parser.
- fixed redrawing of emoticons in the contact list and friendly name label,
when emoticon theme is changed.
- fixed display picture cache clearing, when pictures is changed.
- fixed minimum size of the message editor to one line of text.
- fixed appearance of the transfers window: it now appears in the background
instead of minimized.
- fixed occasional crash when canceling a drag and drop operation on the chat window.
- fixed contact notifications, which were not shown for contacts going online.
- fixed contact notification spam on login.
- fixed a crash when connecting with the fallback HTTP connection (used behind
firewalls, proxies et cetera).
- fixed KDE 4.3.2 bug causing a crash when closing account settings.
- fixed losing the friendly name on login.
- removed small delay when auto-connecting on startup.
- removed in-place editing of emoticons, now it's only done by AddEmoticonDialog.
- removed giflib dependency, as it is now required by ISF-Qt.
- updated Brazilian Portuguese translation by Maurício Arozi Moraes.
- updated Catalan translation by Adrià Arrufat.
- updated Dutch translation by Sjors Gielen.
- updated Estonian translation by Lauri Võsandi, Mihkel Tõnnov and Rivo Laks.
- updated Finnish translation by Marko Mäkilä.
- updated French translation by Émeric Dupont.
- updated German translation by Panagiotis Papadopoulos.
- updated Greek translation by George Kiagiadakis.
- updated Hungarian translation by Pauli Henrik.
- updated Japanese translation by Daniel E. Moctezuma.
- updated Simplified Chinese translation by Cheng Yang.
- updated Spanish translation by Guillermo Arana.
- updated Turkish translation by Uğur Çetin.
Changes between KMess 2.0 and 2.0-rc1:
--------------------------------------
- added back meaningful error messages for unsupported applications.
- fixed crashing when transferring display pictures.
- fixed a small bug in group sorting.
- improved further the RTL languages support.
- updated Arabic translation by Ma'moun Diraneyya.
- updated German translation by Panagiotis Papadopoulos.
- updated Simplified Chinese translation by Cheng Yang.
Changes between KMess 2.0-rc1 and 2.0-beta2:
--------------------------------------
- added Japanese translation by Daniel E. Moctezuma.
- added display of emoticons in presence messages.
- added status restoring on reconnection.
- added fading effect for long text labels and the contact list.
- changed the image used for unknown display pictures.
- changed the application windows icons.
- changed the system tray icon with one showing both the bird and the current
status.
- fixed a crash triggered by clients aborting while we're sending data.
- fixed appearance when using right-to-Left languages, like Arabic.
- fixed bug preventing temporary accounts to be correctly cleaned up.
- fixed file selection errors in chat logging.
- fixed newly added contacts appearing as not having added the user in their
list.
- improved appearance of the contact list when antialiasing is enabled.
- removed all experimental features which could not be finished in time.
- updated Arabic translation by Ma'moun Diraneyya.
- updated Brazilian Portuguese translation by Maurício Arozi Moraes and Sergio
Rafael Lemke.
- updated Catalan translation by Adrià Arrufat.
- updated Finnish translation by Antony Hussi.
- updated Dutch translation by Sander Pientka and Sjors Gielen.
- updated French translation by Scias.
- updated German translation by Panagiotis Papadopoulos.
- updated Greek translation by Dimitrios Glentadakis.
- updated Hungarian translation by Pauli Henrik.
- updated Italian translation by Valerio Pilo.
- updated Slovak translation by Rastislav Krupanský.
- updated Spanish translation by Mauricio Muñoz Lucero.
- updated Simplified Chinese translation by Cheng Yang.
- updated Traditional Chinese translation by Yen-chou Chen.
Changes between KMess 2.0-beta2 and 2.0-beta1:
--------------------------------------
- completed drag&drop support.
- fixed quick retype.
- fixed winks playing and naming support.
- fixed disconnections after many hours of use.
- fixed losing KDE Wallet passwords.
- fixed typing notifications not appearing in WLM 2009.
- fixed long words breaking was breaking copy-pastes.
- fixed weird characters which were breaking the chat styles.
- fixed resending messages already sent as offline messages.
- fixed searching for offline contacts.
- fixed time of arrival of offline messages.
- fixed new chat windows or tabs opened by contacts sometimes stole focus.
- fixed contact list group sorting.
- fixed many memory leaks.
- fixed overflowing contact list background picture and color.
- improved the Chat History dialog and its integration with KMess.
- improved drag and drop support in contact list.
- improved the color of the less important contact status messages in chat.
- improved client detection support.
- improved handwriting message sending.
- improved the file transfers window's behavior.
- improved chat session management.
- improved the LikeBack buttons bar.
- updated English handbook.
- updated Arabic translation by Ma'moun Diraneyya.
- updated Brazilian Portuguese translation by Sergio Rafael Lemke.
- updated Brazilian Portuguese translation by Maurício Arozi Moraes.
- updated Catalan translation by Adrià Arrufat.
- updated Dutch translation by Heimen Stoffels.
- updated Dutch translation by Sander Pientka.
- updated Finnish translation by Antony Hussi.
- updated French translation by Barthe Guillaume.
- updated French translation by Scias.
- updated German translation by Panagiotis Papadopoulos.
- updated Greek translation by Dimitrios Glentadakis.
- updated Italian translation by Andrea Decorte.
- updated Spanish translation by Manuel Ramírez.
- updated Spanish translation by Mauricio Muñoz Lucero.
- updated Traditional Chinese translation by Yen-chou Chen.
- updated Traditional Chinese translation by the Tryneeds-Chinese Translation Platform.
Changes between KMess 2.0-beta1 and 2.0-alpha2:
--------------------------------------
- added support to start chats while you're invisible.
- added automatic reconnection after unwanted disconnections.
- added IRC like command handling in the chat window (/away, etc..)
- added 'Send with KMess' menu item to Konqueror context menu's.
- added verbose status message when KMess fallbacks to the HTTP connection.
- added contact emoticon blacklist, to block annoying custom emoticons from contacts.
- added Likeback support to collect user feedback, ported from Basket of KDE 3.
- added support to configure the toolbars and menus in the chat window.
- added contact list export dialog.
- added context menu to the contact list, to open the contact menu with the left mouse too.
- added confirmation dialogs when the menu gets hidden with Ctrl+M.
- added confirmation dialogs when deleting custom emoticons.
- added confirmation dialogs when deleting old display pictures.
- added filtering options to the file transfer window, to show downloads/uploads only.
- added Greek translation by Panagiotis Papadopoulos.
- added Serbian translation by Zoran Milovanović.
- added Slovak translation by Rastislav Krupanský.
- improved protocol support, upgraded the server core protocol to MSNP15.
- improved user interface of the main login dialog, added links.
- improved overall user interface with further fine tuning.
- improved KDE session restoring; KMess will reconnect if you were connected at logout.
- improved chat notifications to be compatible with the new Plasma notifications of KDE 4.2.
- improved emoticon panels; users can choose between message editors or permanent sidebar panels.
- improved painting controls for the Ink handwriting.
- improved chat logging support (support XML, TXT output) in preparation of a chat logging browser.
- improved chat autoscroll feature.
- improved chat window status bar.
- improved several English messages in the user interface.
- improved reporting of error messages, using notifications for warnings.
- improved cmake detection of libqca2-plugin-ossl package for Ubuntu.
- changed contact sidebar, clicking the contact always shows the context menu.
- fixed multiple bugs with automatic reconnecting.
- fixed blocked login view when there is no network connection.
- fixed saving passwords when the 'save password' account option is off.
- fixed saving passwords when KWallet is not supported, or the user refused to use it.
- fixed contact list group expanding/collapsing with incremental search.
- fixed contact list sorting and grouping.
- fixed context menu to chat with a blocked/offline/allowed contact.
- fixed double error box when adding a non-existing contact to the list.
- fixed chat window focus issues.
- fixed chat tabs for contacts with HTML characters in their name.
- fixed chat tabs for contacts with long names.
- fixed chat tabs being displayed when tabbed chatting is disabled.
- fixed chat messages displayed in the wrong tab.
- fixed chat message wordwrapping for long unbreakable words.
- fixed chat spell checker setting, the setting was not remembered correctly.
- fixed typing messages for tabbed chats.
- fixed adding custom emoticons from the chat window sidebar.
- fixed and improved shortcut keys to switch between chat tabs, start a chat, etc...
- fixed layouting issue in the Classic Compact chat style.
- fixed displaying a 'contact left chat' message twice if there was no conversation in between.
- fixed unclickable display picture in the chat if the contact is offline.
- fixed invalid dates being displayed for contact properties.
- fixed updating the chat windows after an emoticon theme is changed.
- fixed updating the chat style preview when "Group follow up messages" is toggled.
- fixed start folder of the file browser for account pictures.
- fixed displaying the filename for files transferred with the old MSNFTP protocol.
- fixed cancel link not being removed when a file transfer invitation hit the timeout
- fixed notification default settings.
- fixed missing nudge event in the notification settings.
- fixed missing detection of "Windows Media Center" in the list of known MSN clients.
- fixed now listening icon, using a common icon now.
- fixed now listening support, added support for all MPris-compatible players.
- fixed inconsistent order of the artist and track title in now Listening information.
- fixed position of the red circle in the system tray screenshot.
- fixed protocol support of group chats.
- fixed protocol support of the MSN-HTTP fallback.
- fixed protocol support of MSNP2P by Windows Live Messenger 2009, should fix picture/emoticon transfers.
- fixed protocol support of MSN Plus! markup, displaying contact names incorrectly at various places.
- fixed protocol support for resetting your Personal Message, was not recognized by Windows Live Messenger 2009.
- fixed displaying of Offline-IM messages, wrong sender was displayed when receiving many messages.
- fixed error handling for SOAP protocol errors.
- fixed "view profile" pages with updated MSN website.
- fixed crashes in the contact list model code.
- fixed a crash when receiving MSN Plus! predefined messages.
- fixed a crash with receiving files with the old MSNFTP protocol.
- fixed an assertion crashing KMess caused by read-only configuration files with a KDE 4 debug build.
- fixed compiling issues with KDE 4.0, 'KDE on Windows' and MinGW32.
- fixed compiler warnings.
- fixed adblock icons showing up by the embedded KHTMLPart component in the chat window.
- fixed network code to use QNetworkAccessManager, this should give us proper Proxy support.
- fixed browser invocation code, using KToolInvocation to have instant invocation.
- fixed issues with network detection if Solid/NetworkManager is not available.
- fixed removed translator name entries in the .po files; some languages appear to have translated names.
- removed custom notification settings in favour of KNotify settings in the global settings panel.
- updated English handbook by Heimen Stoffels.
- updated Brazilian Portuguese translation by Leonel Freire.
- updated Brazilian Portuguese translation by Sergio Rafael Lemke.
- updated Dutch translation by Elve and Sander Pientka.
- updated French translation by Barthe Guillaume.
- updated German translation by Panagiotis Papadopoulos.
- updated Greek translation by Panagiotis Papadopoulos, Dimitrios Glentadakis.
- updated Hungarian translation by Pauli Henrik.
- updated Italian translation.
- updated Norsk Bokmal translation by Øyvind Sæther.
- updated Simplified Chinese translation by Cheng Yang.
- updated Spanish translation by Alexis Daniel Medina Medina, Juan Pablo González Tognarelli.
- updated Swedish translation by Mattias Newzella.
- updated Traditional Chinese translation by Yen-chou Chen, the Tryneeds-Chinese Translation Platform.
Changes between KMess 2.0-alpha2 and 2.0-alpha:
--------------------------------------
- added connecting over HTTP, to deal with corporate firewalls which only allow connections to browse the web.
- added tabbed chatting support!
- added offline messaging functionality.
- added the support to send ink messages.
- added the support to send huge messages.
- added full MSN Plus text-formatting support in chat and in the contact list.
- added application-wide settings dialog, which includes an account manager.
- added option to choose the interval of ports used for fast file transfers.
- added option to change the groups of a contact from the contact's properties dialog.
- added option to choose a previously set display picture for the account.
- added option to choose the dimensions of the pictures in the contact list.
- added option to specify where received files will be downloaded to.
- added option to display all offline contacts in a single group ("mixed" group mode).
- added option to hide currently empty groups.
- added option to block notifications when the status is set to Busy.
- added option to disable displaying of received winks.
- added option to choose a default directory where to put all received files.
- added option to choose the browser and e-mail client used to open Web links.
- added copy menu entry for the music a contact is listening.
- added a dark chat style suitable for use with dark KDE color themes.
- added ability to keep short notes for each contact.
- added a search box in the contact list.
- added an history box in the contact list, which displays recent contact events.
- added a close button on the notification popups (for people who don't know about right-click to close).
- added a DBus remote control interface, to enable interaction with KMess from other applications.
- added KWallet support to store in a secure way the passwords of the saved accounts.
- added detection of network connection availability, using Solid.
- added tracking of the 'last seen' and 'last chat message' dates for a contact.
- improved reporting of error messages.
- improved the user interface of many dialogs.
- improved the Now Playing support with Amarok 2 support. Amarok 1.4 is still supported.
- improved the file transfer messages within the chat.
- improved the auto-message feature, displays the automessage more often.
- fixed displaying old contact names and no personal messages after login.
- fixed loading emoticon themes containing non-PNG picture files.
- fixed compatibility and styling issues with dark KDE color schemes.
Changes between KMess 2.0-alpha and 1.5.1:
--------------------------------------
- ported to KDE 4.
- added support to receive ink messages.
- added ability to re-use previously opened chat windows after reconnecting.
- added a log for contact logins and logouts at the bottom of the contact list
- added copy options for name, email, personal message, and links to right-click menu of contacts.
- added fast-retype of previous sentences using Ctrl+Up.
- added group selection box to the "add contact" dialog.
- improved overall user interface.
- improved client name detection of contacts.
- improved contact properties dialog
- fixed font color chooser in the chat window, settings could be lost.
- fixed contact re-invites (chat resumes) to the chat when the first attempt failed.
Changes between KMess 1.5.2 and 1.5.1:
--------------------------------------
- added a warning message if a file transfer is started when a non-P2P capable client.
- fixed displaying passwords in the debug window, make it easier to share debug logs.
- fixed displaying old contact names after login.
- fixed enabled auto-away settings if the XScreenSaver extension was not found.
- fixed a bug which caused a disconnection when setting an extremely long nickname.
- fixed a bug which discarded saved settings for an account when quitting and when just disconnecting.
- fixed a bug which prevented non-PNG emoticon themes from loading.
- fixed a crash in debug builds for unknown contacts.
- fixed a possible crash in the passive popups.
- fixed a potential crash in background picture transfers (unlikely to occur).
- fixed a potential passport login problem, not seen yet unfortunately.
- fixed compiler warning on newer GCC.
- updated Brazilian Portuguese translation, made by Darlan Campos.
- updated Simplified Chinese translation by Liu Sizhuang.
Changes between KMess 1.5.1 and 1.5:
--------------------------------------
- added checking if a screensaver or fullscreen app is running, and disable notification popups.
- added option to show contact display pictures in the contact list.
- added spell checker to the chat window, its option is in the Settings menu.
- added a contact list popup text showing which MSN client your contacts use.
- added a little screenshot of the tray icon area when closing KMess to tray for the first time, to help finding where it is.
- added ability to manually select the Idle MSN status.
- added a warning message for broken SOCKS implementations which could cause KMess to freeze.
- fixed selecting a picture in the Autopackage version, and KDE 3.2 / KDE 3.3 installations.
- fixed a possible freeze, could only happen in developer builds (--enable-debug-output).
- fixed focus of typing area when reactivating the chat window.
- fixed the chat window title, which could continue blinking after its window had been given focus.
- updated Danish translation by Pascal d'Hermilly
- updated Traditional Chinese translation by Yen-chou Chen.
Changes between KMess 1.5 and 1.5pre2:
--------------------------------------
- added support to send custom emoticons.
- added support for P4-Context field, used for by plugins of the official client for contact aliases (i.e. Xiaoi's Qun). Patch by LiuSizhuang.
- added initial status chooser at login, and in the account settings.
- added drag&drop for files in the chat window to send files.
- added internationalization support to the service status URL.
- added automatic download of new display pictures in the background.
- added option to crop a picture before using it as display picture.
- added zoom buttons to scale the chat window text.
- added context menu to open and copy links in chat window.
- added "remove and block" option in the contact remove dialog.
- added dialog to confirm overwrite when saving a chat to file.
- added dialog to confirm overwrite when renaming custom emoticons.
- added auto clean up of the configuration files for outdated info.
- added keepalive support to see when a contact really closed the chat window, or the chat went idle.
- added a tooltip to the system tray, showing current name and status.
- added warning message when chatlogs can't be saved (e.g. wrong permissions).
- added status message upon server shutdown for maintenance notification.
- added notification balloons for contact typing and contact status changes.
- added a workaround for NAT timeouts when behind a "black hole" router.
- changed default chat style to "Fresh", old style is renamed to "Classic".
- improved notification balloons, completely new implementation using more standard KDE functionality.
- improved notifications with correct balloons when transferring files and receiving winks and nudges.
- improved taskbar notification of new messages, added asterisk in front.
- improved "Remember this profile" checkbox, it's consistent with the selected account.
- improved error messages for adding invalid MSN accounts.
- improved memory usage by reducing dependencies on QWidget.
- improved memory usage when a chat is started to download a display picture in the background.
- improved tests for invalid e-mail addresses when adding a new contacts.
- improved account settings dialog behavior when adding invalid email addresses.
- improved chat window appearance, with a new right-click menu for the listed contacts, and a resizable message box.
- improved file transfer speed over high speed links.
- improved saving of settings; save directly, not only when KMess quits.
- improved login handling to Passport 3.0 webservices.
- improved the user manual, reorganized completely.
- improved developer API documentation, especially the networking classes.
- improved transfer window's reliability.
- prepared preliminary support for tabbed chats.
- fixed multiple problems with broken file/picture transfers, especially over slow links or slow systems.
- fixed replacing of custom emoticon placeholders which contain <, > or & characters, or quotes.
- fixed support for default messages from MSN Plus!.
- fixed keyboard shortcut to insert new lines in the chat messages.
- fixed keyboard shortcut to copy text in the chat window.
- fixed background rendering in the contact list.
- fixed now playing icon, previous one was SUSE-specific.
- fixed Hotmail folders opening in wrong browser.
- fixed login selectbox, display last selected account at logout.
- fixed opening the main window when KMess is started with KDE.
- fixed missing emoticon example pictures next to the emoticons checkbox.
- fixed settings dialog height, was too big for 800x600 displays.
- fixed settings of notification balloons, balloons can be disabled again.
- fixed emoticon theme settings previews, some themes lacked a preview image.
- fixed links to account registration and verification in the settings dialog.
- fixed maximum length of displayed messages in the message balloons.
- fixed notification balloons text with special messages, like nudges or file transfers.
- fixed resuming chats when there was no connection to switchboard (gray display pictures in the chat).
- fixed raising existing chats when trying to open one from the contact list.
- fixed duplicate chat windows when clicking repeatedly on a contact in the list.
- fixed reuse of chat windows to use expected behavour.
- fixed subtle GUI flashing in the chat window for the contact picture.
- fixed changing an accounts email, it did not get reflected in the initial login UI and the menu's.
- fixed personal message being sent when the main window lost focus, not only when we confirm its change.
- fixed non working 'open inbox/send mail' links for non-Hotmail accounts, which now open the mail account specified in the settings.
- fixed broken contact images which don't get updated; added data hash check.
- fixed connection timeout error with downloading offline-im messages.
- fixed connection timeout issues during login for slow connections.
- fixed incorrect "transfer failed" message when sending files to Mercury Messenger.
- fixed internal protocol message to withdraw a started file transfer (not visible with WLM).
- fixed internal protocol encoding with commands which update groups in the contact list.
- fixed internal protocol handling to allow MSNSLP ACK messages.
- fixed invalid image when contacts don't have a display picture or it's not valid anymore.
- fixed unwanted destroying of the direct connection if a switchboard connection restarts.
- fixed handling of direct connection write errors, revering to the switchboard.
- fixed unwanted "session is cancelled" messages after completing a file transfer.
- fixed issues with aborting invitations when a chat window closes.
- fixed blocking KMess user interface with account settings dialog.
- fixed blocking user interface when the network is down or slow during the login.
- fixed 'eventsrc' file not being found by KMess.
- fixed 'eventsrc' warning, path should be 'kmess/eventsrc'.
- fixed compiling in Mac OS X (fink environment with KDE3/X11).
- fixed a series of potential crashes with closing the chat window.
- fixed a crash when closing the application.
- fixed a crash when downloading offline-im messages.
- fixed a crash when the contact was removed with it's chat window open.
- fixed a crash when the contact cancels a file transfer and the user is still choosing a destination folder.
- fixed a crash when the direct connection could not be initialized correctly.
- fixed a crash when a contact changes status but its chatwindow is not yet loaded.
- fixed a freeze when receiving custom emoticons from Kopete.
- fixed a freeze when starting/resuming multiple chats at the same time.
- fixed a freeze when there are too many unacked P2P messages in a chat.
- fixed a freeze when starting a file transfer with direct connections.
- fixed a possible freeze when inserting emoticons into the messages.
- fixed memory leaks in the chat window using Valgrind.
- fixed many compiler warnings.
- fixed word puzzles in translations with notification balloons.
- fixed translations for the Transfer Window messages.
- removed custom proxy support in favor of the global KDE settings.
- reduced the time KMess waits before detecting a connection error.
- updated Arabic translation by Youssef Chahibi.
- updated Danish translation by Pascal d'Hermilly.
- updated Dutch translation by Jaap Woldringh.
- updated Finnish translation by Jussi Timperi.
- updated French translation by Andrea Blankenstijn and Choplair.
- updated German translation.
- updated Hungarian translation by Páder Rezsõ.
- updated Italian translation by Vincento Reale.
- updated Spanish translation by Christian Kaiser.
- updated Swedish translation by Christian Lundgren.
- updated Thai translation by Rachan Hongpairote.
- updated Turkish translation by Uğur Çetin.
- updated Simplified Chinese translation by Liu Sizhuang.
- updated Traditional Chinese translation by Yen-chou Chen.
Changes between KMess 1.5pre2 and 1.5pre1:
--------------------------------------
- added "now playing" support, both sending and receiving.
- added file transfer preview support, both sending and receiving.
- added x-clientcaps message for third party client exchange.
- added option to disable the nudge shaking effect, completing the nudge support.
- added proper error message for webcam invitations, which are currently not supported yet.
- added support for an second incoming file transfer invitation to become client instead of server.
- added translation support for chat styles, fixed untranslated "says:" message in the chat window.
- added emoticon image conversion to the the personal status message.
- added warning message when KMess is installed in a folder where it can't find it's resources.
- added warning dialog when KMess can't find it's eventsrc file to handle notifications.
- improved visual *bold*, /italic/ and _underline_ effects, they don't hide the ASCII codes anymore.
- improved account menu's, display account handle instead of long friendly name.
- improved compatibility with Windows Live Messenger's protocol for client-to-client invitations.
- restored context menu in the chat window.
- fixed file transfers, a timer was not stopped to detect a direct connection timeout.
- fixed crash when a timeout occurs during a direct file transfer.
- fixed login problems with "restricted passport accounts".
- fixed image width/height of received custom emoticons.
- fixed link parsing, adding http:// before www. URL's, and fixed geek-style links (links without www. or http://).
- fixed unwanted resizing of the chat window when the statusbar text didn't fit.
- fixed unwanted resizing of the chat window sidebar.
- fixed contact window alignment, right-to-left names aligned randomly.
- fixed contact window updating when a group was succesfuly renamed.
- fixed lost personal status message when moving contacts.
- fixed own personal status message, it could literally become "<Enter your personal message here>".
- fixed missing right-to-left flag in sent chat messages.
- fixed message "<handle> has left the chat", displays contact name now.
- fixed missing contact name when adding new contacts.
- fixed missing "overwrite file" question when saving sent files.
- fixed tab order of the 'chatting' options panel.
- fixed revoking of sent invitations when a timeout occurred.
- fixed typing notification, these were not sent instantly when the user continues to type after sending a message.
- fixed emoticons support for KDE 3.3 and below.
- fixed emoticons installation with the installer.
- fixed compiling with automake 2.10.
- fixed compiling of the RPM with patch level KDE versions (e.g. 3.1-10).
- fixed character encoding problem in the desktop file.
- fixed filename of Estonian translation.
- updated website address, moved to www.kmess.org.
- updated Dutch translation by Jaap Woldringh.
- updated Danish translation by Pascal d'Hermilly.
- updated German translation.
- updated Finnish translation by Joonas Niilola.
- updated Hungarian translation by Páder Rezsõ.
- updated Italian translation by Valerio Pilo.
- updated Spanish translation by Jaume Corbí.
- updated Turkish translation by Uğur Çetin.
- updated Traditional Chinese translation, by Yen-chou Chen.
- added Hungarian translation by Páder Rezsõ.
- Removed ASL and unhappy icon because these are no longer used in Windows Live Messenger.
Changes between KMess 1.5pre1 and 1.4.3:
----------------------------------------
- added direct connection support, faster file transfers.
- added chat message styles. Styles can use all CSS2 features supported by KHTML.
- added emoticon themes to the chat window. They can be switched on-the-fly.
- added offline-im support (receiving only).
- added custom emoticon support (receiving only).
- added winks support (receiving only).
- added nudge support.
- added personal status message support.
- added grouping of chat messages from the same contact.
- added alt tags to all emoticons, for easy copy-pasting.
- added a link to "register.passport.net" for creating a new account.
- added support for file transfers between hosts of the same LAN.
- added support for parallel transfers over the same direct connection.
- added support for relaying invitations to another swichboard connection.
- added option to upgrade a temporary/guest account permanently (when "Remember this profile" was left unchecked).
- added detection of unverified passport e-mail adresses.
- added translation for Finnish.
- added Doxygen configuration to generate API docs.
- upgraded client-server protocol to MSNP12 (MSN Messenger 7.5).
- upgraded client-to-client protocol to MSNC5 (MSN Messenger 7.5).
- improved login dialog, replacing the confusing profile box.
- improved main window interface, added contact picture to main window.
- improved chat window interface, added sidebar for contacts and emoticons.
- improved settings dialog, added widgets of the "display pic" tab to the "accounts" tab.
- improved detection of login errors for problems with the MSN servers.
- improved chat message link detection with support for e-mail addresses and sftp:// links
and "geek-style" urls (urls without a http:// or www prefix, like "slashdot.org").
- improved performance for accounts with large contact lists.
- improved "connection timeout" message, with suggestions to "check the Internet connection and MSN service status".
- improved support for temporary/guest accounts (e.g. for internet cafe usage or friends visiting).
- improved right-to-left language support, chat messages are reversed in the same way 'kmess --reverse' changes the GUI.
- changed chat window title, displaying the contact name before the "KMess" part.
- changed emoticon size, emoticons are displayed at their real size instead of being scaled.
- fixed annoying error messages with picture transfers, only displayed in the console now.
- fixed repeatedly displaying "this contact is offline" warnings while typing a message.
- fixed unwanted saving of the contact list for "guest accounts", this was overlooked by a bugfix of 1.4.
- fixed minor issues that occurred when the chat connection is established but the invited contacts have not entered the chat yet.
- fixed handling of unexpected disconnections by the server, contactlist was not saved and reset, invitations were not aborted.
- fixed unwanted "Connection timed out" message when it took more then one minute to authenticate and download the contact list.
- fixed handling of connection errors, no error message was displayed except for connection timeouts.
- fixed closing the connection when 3 pings are missed.
- fixed detection of cancelled file transfers.
- fixed cancelling of file transfer invitations before the contact accepted.
- fixed cancelling of file transfer sessions by the one who didn't start the transfer.
- fixed display problems with dark color schemes.
- fixed parsing of chat messages containing both emoticons and hyperlinks.
- fixed login from main window, no longer creates a new account by default.
- fixed hanging user interface during file transfers invitations.
- fixed small memory leak, chat invitation was not removed.
- fixed title of the "save" menu item in the chat window.
- fixed error message for third-party "text/x-keepalive" message.
- fixed "&Verdana" font setting in chat messages. This was addressed in KMess 1.4,
but it could still appear if you never changed font settings.
- fixed font size of font selection buttons, as the font size is not used by the msn protocol.
- fixed race condition that could make KMess crash when a chat window was closed while a contact was leaving or typing.
- fixed overwriting chat logs when the conversation is restarted within the same minute.
- fixed saving settings of the main window menu when disconnecting/switching accounts.
- fixed e-mail notification settings, gray out options if user is not logged in with a Hotmail account.
- fixed file chooser path for display pictures, in SUSE it opened /etc/opt/kde instead of /opt/kde3
- fixed translation of Danish, renamed from "dk.po" to "da.po".
- fixed right-to-left support for translated notification/event/error messages in the chat window.
- updated Turkish translation, by Uğur Çetin.
- removed support for Qt 3.1 due the use of the QToolbox widget in the chat windows.
Changes between KMess 1.4.3 and 1.4.2:
--------------------------------------
- fixed a crash occuring when resuming a chat.
- fixed a crash at quit, caused in ContactAction disconnect code.
- fixed compilation error for KDE 3.5.1 (KURLLabel::setSizePolicy() API changed).
- fixed receiving files from Mercury Messenger, KMess responsed with an incorrect Content-Type field.
- fixed .Net messenger service status URL (was changed again).
- fixed two issues with certain unexpected MSNP2P packets:
- Bot2K3 4.1 sends the first ACK without flags.
- Encarta Instant Answers sends the data preparation message with the data flag set.
- fixed missing MSNP2P ack packets, accidently emulated a bug of MSN 7.0.
- fixed chat messages with links and emoticons (this is only a temporary fix)
- This fix disables emoticons in a chat message when there are links in the message too.
- As of 1.5 we can include a better the message parser/formatter which handles emoticons+links the right way.
- removed /debian folder as requested by Debian packagers (KMess is in Debian unstable now).
- removed --enable-phone, option is still not fully operational (needs to be replaced with libkcall).
- changed chat window statusbar to show by default, so it's more obvious why the contact picture lights up.
- added detection of https:// links
- added the (0) symbol for the clock emoticon.
- added contact status and picture to contact list tooltip.
Changes between KMess 1.4.2 and 1.4.1:
--------------------------------------
- correctly merged the patches of KMess 1.4.1 this time (sorry!)
- fixed the font selection buttons in the settings panel.
- fixed a problem with new contacts adding you while you're online.
- fixed a problem with rpm building as root in SuSE (KDE not in $PATH).
- fixed a problem and crash with display pictures when the contact has none.
- fixed a crash during KMess quit, contacts were unloaded incorrectly.
- fixed a crash after disabling the display picture.
- fixed a crash after closing the chat session with active invitations.
- added translation for Slovenian.
Changes between KMess 1.4.1 and 1.4:
------------------------------------
- fixed a crash during chat with MSN Messenger 7.5 (also fixes picture transfer).
- fixed a crash during chat with contacts that are not on your list.
Changes between KMess 1.4 and 1.4pre1:
--------------------------------------
- added translations for: German, Spanish, Swedish and Chinese Traditional.
- added a file icon to the file transfer dialog.
- added automatic downloading of updated contact pictures during chat sessions.
- added autopackage binreloc support, images can be loaded whatever the --prefix was.
- added 22x22 icons for KMess.
- added initial support for MSN Games/Activities (only displays name in chat window so far).
- added initial support for autopackage, it can still have problems because of C++ ABI changes.
- added support for dpkg-buildpackage to build Debian/Ubuntu packages.
- restored all languages, it appears fuzzy strings aren't displayed after all.
- improved the rpmbuild spec file:
- added a final status message with the produced package filename.
- added verbose colorful output.
- added more distro detections.
- added automatic rpm->tgz, rpm->deb conversion.
- added support for apg++, it will be used automatically used if it's installed.
- improved console output messages for msnp2p errors.
- optimized some network handling code.
- optimized the loading and locating of images.
- fixed compilation errors for KDE 3.1.
- fixed compilation errors for a few distro's (added stdlib.h).
- fixed the resuming of chat sessions, all pending messages are sent and re-connects are supported from both-sides.
- fixed the hidden chat windows, they stayed active in the background.
- fixed the closing of chat windows, closing a chat window really destroys it now.
- fixed the erratic crashes when quitting KMess.
- fixed the e-mail status bar display, it hides automatically again for non-hotmail accounts.
- fixed the e-mail status bar link, clicking the e-mail link opens the e-mail client again.
- fixed the e-mail client configuration, it's possible to include command arguments again.
- fixed the sidebar picture for contact picture that can't be loaded.
- fixed the URL for the MSN .Net server status.
- fixed the open link for file transfers.
- fixed the accept link, it can't be accepted twice now.
- fixed the file transfer toolbar icon in the chat window.
- fixed the layout issues of the file transfer dialog items.
- fixed the unwanted resizing of file transfer dialog items when the transfer finished or failed.
- fixed the rejection of unsupported invitation types (both mime and msnp2p).
- fixed the KMess-to-KMess msnp2p transfers (e.g. picture transfers).
- fixed the sending of files.
- fixed the canceling of active file transfers.
- fixed the canceling of invitations when the chat window closes.
- fixed the error messages for canceled invitations (they are more accurate now).
- fixed the msnp2p support (picture transfer, et. al) for chats with more then one contact.
- fixed the configure check for the auto-away feature.
- fixed the automatic saving of chat logs:
- chat logs were saved in the parent folder.
- chat logs were not saved when the contact left early.
- chat logs are no longer saved if the message area is empty.
- changed the chat log timestamp from closing date to starting date.
- fixed the another lost chat messages problem when being idle behind a NAT router.
- fixed the problems with KMess blocking KDE logout when the main window was still open.
- fixed the saving of settings at KDE logout.
- restored the shortcut key for the "New Line" button.
- removed the IP dialog for sending files, it always uses the external IP address now.
- removed the remote desktop invitation support, since it's not compatible with the official client.
Changes between KMess 1.4pre1 and 1.3:
--------------------------------------
- added msn6 picture transfer support
- added msn6 file transfer support (receiving only)
- added new file transfer dialog
- added new icons for emoticons
- added flashing taskbar for new messages
- added spec file to build RPM packages
- improved/fixed contact list view
- improved contact list tooltip
- improved some context menus
- improved desktop menu icon
- fixed a few possible crashes
- fixed contact moving with new msn protocol
- fixed login problems with new passport site
- fixed login problems with empty contact list
- fixed lost chat messages (timeout issues)
- fixed newline problems with MacOS MSN Messenger
- fixed problems with bad e-mail addresses
- fixed problems with new contacts not appearing in the list
- fixed problems with long name in main window (squeezed now)
- fixed problems with "word-puzzles" in translations
- fixed save-as dialogs, added the suggested file name
- fixed a lot of compilation errors; KMess should be easier to compile now
- fixed compilation errors for a few distro's
- fixed compilation errors for gcc-3.4
- reduced the build and runtime dependencies
- updated configure checks for auto-away feature
- removed baloon popup at signon.
+81
View File
@@ -1 +1,82 @@
About KMess:
============
KMess is a Windows Live Messenger client for Linux. It enables
Linux, Mac and even Windows users to chat with friends online
who are using the official Messenger client for Windows. The
strengths of KMess are its integration with the KDE desktop
environment, its focus on Live Messenger specific features
and an easy-to-use interface.
Like many Linux and KDE applications, KMess is free software.
The licensing terms are the GNU General Public License.
Installing KMess:
=================
Please see the INSTALL file for help with compiling and installing
KMess from source.
Updating the translations
=========================
You can help translating KMess!
This is what you need to do:
- Get the latest version of KMess
- Install "lokalize" (supplied with "kdesdk")
- To create a new translation file, copy "kmess.pot"
to a new file named "<your language>.po".
- Open the language "po" file, and start translating!
Also watch for translations marked as "fuzzy",
they often need updating.
- Update the translations.
- Test the new translation.
(to test other languages, run 'KDE_LANG=<code> kmess')
- Contact the KMess developers to send your changes!
A more detailed tutorial can be found online
at http://trac.kmess.org/wiki/Translating%20KMess
Building RPM Packages
=====================
To build a RPM package for your distribution, run:
rpmbuild -tb kmess-<version>.tar.gz
Building Slackware Packages
===========================
To build a TGZ package for Slackware, run:
rpmbuild -tb kmess-2.0.tar.gz
Licensing
=========
We provide along with KMess some Oxygen icons which are usually bundled with Kopete.
They are released under LGPL 3.0 (see http://www.oxygen-icons.org/).
See COPYING_ICONS for full license text.
The remainder of KMess is released under the GPL2+ . See COPYING for full license text.
More Information
================
For more information about KMess, help forums, and the latest
releases, visit the homepage at http://www.kmess.org/
+8
View File
@@ -1 +1,9 @@
For bugs, future ideas, et cetera, please check our developer site
powered by trac at http://trac.kmess.org/.
If you're looking for junior jobs, you may also contact us at the
KMess help forums: http://kmess.org/board/
- The KMess team
-10274
View File
File diff suppressed because it is too large Load Diff
Vendored
-10807
View File
File diff suppressed because it is too large Load Diff
-757
View File
@@ -1,757 +0,0 @@
2002-04-26 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in removed bogus message
2001-11-07 Walter Tasin <tasin@kdevelop.org>
* now #MIN_CONFIG tag takes parameters for KDE_USE_QT, too.
e.g. #MIN_CONFIG(2.2) for qt 2.2 usage
2000-11-30 David Faure <faure@kde.org>
* acinclude.m4.in: Added kde_moduledir which points to $prefix/lib/kde2/
2000-07-24 Alex Zepeda <jazepeda@pacbell.net>
* acinclude.m4.in: Remove the test for malloc.h
2000-04-05 Michael Matz <matz@ifh.de>
* config.pl : added kludge for compiling regexp's even if
perl < 5.005 is installed
* conf.change.pl : added support for autoconf 2.14.1
2000-03-27 David Faure <faure@kde.org>
* acinclude.m4.in, Makefile.common: changed inst-apps semantics
If present, only the subdirs it lists will be configured and compiled.
If absent, then subdirs is used (and inst-apps isn't generated anymore)
2000-03-22 David Faure <faure@kde.org>
* am_edit: Added support for KDE_ICON = AUTO
2000-03-18 David Faure <faure@kde.org>
* Makefile.common: Rewrote the list-of-Makefiles generation to make it
simpler and nicer, using create_makefiles' way of doing it.
Added support for COMPILE_LAST and COMPILE_FIRST in toplevel Makefile.am
2000-01-05 David Faure <faure@kde.org>
* Makefile.common: hacked around autoconf bug (setting INSTALL to ".."
when calling a subconfigure and INSTALL is already set).
1999-12-15 Waldo Bastian <bastian@kde.org>
* acinclude.m4.in: Test whether Qt compiles AND LINKS without flags.
1999-06-24 Stephan Kulow <coolo@kde.org>
* am_edit: generate correct Makefile entries for kde-i18n toplevel directories
* am_edit:
1999-06-14 Stephan Kulow <coolo@kde.org>
* am_edit: remove idl generated files on make clean
1999-06-09 Stephan Kulow <coolo@kde.org>
* am_edit: skipping programs with variables in sources for final
1999-06-07 Stephan Kulow <coolo@kde.org>
* am_edit: added support for idl files
1999-06-02 Stephan Kulow <coolo@kde.org>
* Makefile.common: preserve comments in .pot files to make it
possible for programmers and translators to comment them
1999-06-02 Simon Hausmann <hausmann@kde.org>
* acinclude.m4.in: added kde_servicetypesdir
1999-06-02 David Faure <faure@kde.org>
* acinclude.m4.in: removed LIB_KFM and LIB_KDEUTIL aliases
1999-05-28 Simon Hausmann <hausmann@kde.org>
* acinclude.m4.in: added kde_servicesdir
1999-05-27 Stephan Kulow <coolo@kde.org>
* am_edit: lots of changes for better support of --enable-final
1999-05-22 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added support for --with-dmalloc
1999-05-19 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added support for --enable-final
* am_edit: added support for --enable-final
1999-05-06 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: change the meaning of --disable-debug
1999-05-04 Helge Deller <deller@gmx.de>
* acinclude.m4.in: the test for the X-includes/directories failed,
when compile & link work without special directories (as on HP-UX).
1999-04-20 Stephan Kulow <coolo@kde.org>
* am_edit: adding DESTDIR replacement for rm and uninstall-local
too. Seems very useless, but makes testing for uninstall easier
1999-04-01 David Faure <faure@kde.org>
* acinclude.m4.in: Added -lkfile to $(LIB_KIO)
1999-03-30 David Faure <faure@kde.org>
* acinclude.m4.in: Added AC_CHECK_KDEMAXPATHLEN, which defines KDEMAXPATHLEN.
1999-03-29 David Faure <faure@kde.org>
* acinclude.m4.in: added LIB_X11 to XPMLIB and GLLIB, because
on SCO, they need it _after_ themselves.
1999-03-28 David Faure <faure@kde.org>
* acinclude.m4.in: added LIB_KFM to LIB_KAB alias
1999-03-26 David Faure <faure@kde.org>
* acinclude.m4.in: made LIB_KFILE use LIB_KIO instead of LIB_KFM
added LIB_KFORMULA
1999-03-20 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: check for libXext - for Russel :)
1999-03-16 Stephan Kulow <coolo@kde.org>
* acinclud3.m4.in: extend the MICO test with a list of possible
places where to find CORBA.h
1999-03-15 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: move $QTINC and $QTLIB in search path
1999-03-14 Stephan Kulow <coolo@kde.org>
* am_edit: install-root is obsolute. Use DESTDIR always
1999-03-03 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixing a bug, that $QTDIR was taken before --with-qt*
* acinclude.m4.in: added KDE_USE_QT, that you can choose if to
use QT 2.0 or KDE 1.0
* Makefile.common: added target package-merge
* am_edit: many fixes to the POFILES handeling of am_edit
1999-03-02 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: first look at libjpeg6b (from kdesupport) then
for libjpeg
* config.*, libtool.*: update to the latest FSF tools
1999-02-23 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: error when Sparc CC is used. Better use it in
configure and tell him the story then letting him find it while
compiling
* acinclude.m4.in: adding KDE_CHECK_EXTRA_LIBS to all possible tests,
so that --with-extra-includes is used when needed.
* acinclude.m4.in: configure looks for giflib30, so it should say so
* acinclude.m4.in: don't overwrite x include parameters. Patch by
Ari Lemmke <ari.lemmke@regex.fi> (bug report 741)
1999-02-20 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixing KDE_CHECK_PATHS for rechecking. In case
of defaults (kdelibs) configure didn't cache the results
1999-02-18 David Faure <faure@kde.org>
* acinclude.m4.in: added AC_CHECK_S_ISSOCK, to fix #706.
1999-02-17 David Faure <faure@kde.org>
* acinclude.m4.in: added AC_CHECK_RANDOM, just like
AC_CHECK_USLEEP, to enable the fake if necessary.
1999-02-13 Kurt Granroth <granroth@kde.org>
* acinclude.m4.in: look for QT-2.0
1999-02-05 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: in macro KDE_FIND_PATH treat user given dirs
and $PATH dirs the same. Added seperate test for to find binary
($5) to replace findperl
1999-01-28 Stephan Kulow <coolo@kde.org>
* automoc: added patch by jbb to be a little bit more precise about
the number of sourcefiles that include the moc file if it's != 1.
Besides that automoc will fail with exit code, so the Makefile.cvs
process does stop in case a problem accoured.
* automoc: don't hardcode header suffix, but allow *.h, *.hh and *.H
1999-01-27 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: try qobjcoll.h and qapplication.h before saying
OK to qt headers. (I could kill SuSE for splitting into qt-dev
and qt-compat)
1991-01-23 Stephan Kulow <coolo@kde.org>
* automoc: added fixes by JB <jb.nz@writeme.com>
1999-01-21 Stephan Kulow <coolo@kde.org>
* automoc: added --help and --path (for use in dist-hook)
1999-01-20 Alex Zepeda <garbanzo@hooked.net>
* ltconfig: added entries for FreeBSD 4.x
1999-01-19 Stephan Kulow <coolo@kde.org>
* automoc: added a distclean-metasources target which deletes all
moc files and let distclean depend on it
1999-01-18 Stephan Kulow <coolo@kde.org>
* automoc: several fixes (ignore comment lines + join lines
with \ )
* automoc: support META_INCLUDES in case the header files are
not in the same dir as the sources.
1999-01-17 Stephan Kulow <coolo@kde.org>
* automoc: several fixes.
1999-01-16 Stephan Kulow <coolo@kde.org>
* automoc: added support for included MOC files.
* acinclude.m4.in: use srcdir for the subdirs stuff as well
* automoc: added better command line parsing and some preparation
for handling "normal" moc files
* acinclude.m4.in: added aliases for libkio and libkdeutil
1999-01-15 Harri Porten <porten@kde.org>
* automoc: Carved in stone syntax for Makefile.in:
{program}_METASOURCES = USE_AUTOMOC [{suffix}]
1999-01-15 Stephan Kulow <coolo@kde.org>
* Makefile.common: set top_srcdir to .
1999-01-14 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't use config.h.bot any longer
1999-01-08 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added KDE_CHECK_NEWLIBS
* acinclude.m4.in: test for Qt even if both --with-qt-headers and
--with-qt-libraries are given. They may be wrong.
1999-01-06 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: change the MOC test so it can be used for other
tools as well
1998-12-28 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: look for QT-1.42 since kpanel needs it
1998-12-27 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added /usr/lib for libpython test
* acinclude.m4.in: take my email address out of it and added a
reference to www.kde.org/faq
* acinclude.m4.in: use Qt >= 1.4
* acinclude.m4.in: added KDE_CHECK_NAMESPACES
1998-12-18 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: test for directories to exist before saying yes
to compilation :)
1998-12-14 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added CPLUSPLUS for the kimgio test. It's
only important for shaman right now, but at least there it is :)
1998-12-12 Stephan Kulow <coolo@kde.org>
* Makefile.cvs: added common Makefile.cvs
* acinclude.m4.in: Thomas.Schwarz@pro-sieben.de reported a very ugly
bug in AC_PROG_CXXCPP, so I added my own version
* acinclude.m4.in: added KDE_CREATE_SUBDIRS_LIST to simplify
most toplevel configures
1998-12-11 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added call to AC_PROG_CXXCPP. Not really sure why
it never caused problems
* acinclude.m4.in: moved LIBTIFF alias
* acinclude.m4.in: only test for the existance of libkimgio if the
user wants to. For 99% of the applications it doesn't matter if
configure can find libkimgio :)
1998-12-10 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: some changes to the python check to handle $LIBDL
1998-12-09 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: make Alex's tiff test a real one
* acinclude.m4.in: fix the LIB_TIFF alias to really expand
1998-12-08 Alex Zepeda <garbanzo@hooked.net>
* acinclude.m4.in: Fix tiff test to use libtiff34 if it exists.
This is what the FreeBSD port installs to for whatever reason.
* acinclude.m4.in: s/kde/KDE/ (at least in some of the
descriptions, obviously no variable names were touched.
1998-12-08 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: moved the LIB_QT alias to the Qt check
* acinclude.m4.in: unset KDEDIR before running conftest
* acinclude.m4.in: fixed mean typo
* acinclude.m4.in: added the copyright header for the gettext
tests, so that people know we're legal ;)
* acinclude.m4.in: set language to C++ before testing QIMGIO
1998-12-07 Alex Zepeda <garbanzo@hooked.net>
* acinclude.m4.in: Fix PNG test to use correct ANSI C code, and
not trip up gcc.
1998-12-07 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't hardcode -ldl
* acinclude.m4.in: move the LIB_X11 alias to the X test to make it
useful for kdesupport as well
* acinclude.m4.in: give the word CHECK_KIMGIO a meaning in really
checking for it
* acinclude.m4.in: simple fix to prevent kimgio test from compiling
KDE application in kdelibs
1998-12-05 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: let KDE_CHECK_KIMGIO depend on AC_PATH_KDE,
otherwise most tests fail. It didn't mean anything to 90% of the
packages since they test for KDE before kimgio, but for shaman
it does
* ltconfig: the real fix for the Solaris && gcc problem.
Thanks Kurt for reporting it and Alexandre for fixing it :)
1998-12-04 Stephan Kulow <coolo@kde.org>
* libtool.*: update again
* acinclude.m4.in: changed the function to test for libnsl to
inet_ntoa since UnixWare 7's version did not have gethostbyname,
but needs libnsl
1998-12-02 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixed the MOC test (again) to use the PATH variable
correctly (with the correct seperator)
* config.guess: update from the soon to be released autoconf-2.13
1998-12-01 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixes for the MOC test. Use PATH now when found
1998-11-30 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: extended the MOC test. It checks now for the
first line of the output of "moc --help" and looks for Qt in it.
1998-11-27 Stephan Kulow <coolo@kde.org>
* ltconfig: another libtool update. Fixes an ugly bug on Solaris,
when GNU ld is in path before Solaris ld, but gcc uses the later
1998-11-26 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: made the Qt test more advance to check for qt
1.41 - I still need to make it better, but there shouldn't be too
many qt releases in a row, would there? ;)
* ltconfig: libtool update with better BSD/OS support
1998-11-22 Stephan Kulow <coolo@kde.org>
* ltconfig: cool - libtool uses g++ now to link libraries on Solaris.
This means, static objects become usuable on that plattforms (some
others as well).
1998-11-20 Stephan Kulow <coolo@kde.org>
* ltmain.sh: updated libtool from their CVS - fixes bugs we haven't
found and adds some more features, that we do not need ;-)
1998-11-19 David Faure <faure@kde.org>
* acinclude.m4.in: added AC_CHECK_UTMP_FILE, taken from kdebase
1998-11-16 Harri Porten <porten@kde.org>
* automoc: take care of "ar" object files, too.
1998-11-16 Stephan Kulow <coolo@kde.org>
* libtool.m4.in: revised my --silent patch. The solution
Alexandre suggested is much better.
1998-11-15 Stephan Kulow <coolo@kde.org>
* ltconfig.in: done some tweakings to support -export-dynamic
with egcs
* config.sub: wow - BeOS support :)
1998-11-14 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't use rpath for test program, if rpath is
disabled for applications
* ltconfig: patched libtool to make it silent without making
ltconfig silent
* acinclude.m4.in: make libtool silent again
* libtool.m4.in: update to libtool-981114 (untested stuff, but
we have to test it to make it tested - sounds that logical? :-)
* libtool.m4.in: moved the self stricked libtool tests to "our"
file.
* acinclude.m4.in: moved ChangeLog of kdebase which I used to
maintain acinclude.m4.in logs to kde-common/admin. Hopefully I
will maintain it more often from now on :)
1998-07-27 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixed some things in the MOC test
* acinclude.m4.in: fixed this damn msgfmt test
1998-06-02 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: ignore msgfmt, if not GNU gettext
1998-05-28 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixed KDE_CHECK_STL. Checks for HP and SGI type
* acinclude.m4.in: embraced every variable with "" to make
it consistent
* acinclude.m4.in: various fixes for the koffice checks
(mico, ministl and python)
1998-05-16 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't use KDE_CHECK_QT_DIRECT, when
--with-qt-libs are given
1998-04-21 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: cool, I found the trick to suppress the ls
errors
1998-04-20 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: rewrote the qt checking test, since it
didn't work under FreeBSD, since it relied on the .so link.
The new version is a little bit buggy, but I need some testing
to make it perfect
* acinclude.m4.in: fixed the side effects of the PAM test
1998-04-18 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: hopefully fixed the PAM test (I rewrote it)
1998-04-16 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: extended the getsockname test inspired
by a patch by Martin Baulig
* configure.in: added test for utmp file
* acinclude.m4.in: made --without-pam default
1998-04-06 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: don't test compiling, linking, running in
one step. This proved to be too dangerous for my mail box.
1998-03-21 Stephan Kulow <coolo@kde.org>
* libtool.m4.in: created some new macros to work around this
ugly (because long) help of configure --enable-shared/static
1998-03-05 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: set language to C++ before trying the ksize_t
test
* configure.in: sorted the Makefile entries alphabeticly (and all
together: we love xemacs! we love xemacs! ;)
* configure.in: added sk
* acinclude.m4.in: substitute x_libraries to fix the empty -rpath
1998-03-03 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: add a rpath for every shared library, that is
linked too (especially X11 libraries)
Tue Feb 24 22:04:59 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added kde_sounddir and set kde_minidir to
kde_icondir/mini to break not too much
Sun Feb 15 18:25:50 1998 Stephan Kulow <coolo@kde.org>
* configure.in: added bugfix by Bob Miller <kbob@engr.sgi.com>
(correct reset of IFS)
Wed Feb 11 00:53:11 1998 Stephan Kulow <coolo@kde.org>
* configure.in: made shadow under Linux default, since the
binaries will work also under non-shadow systems. The only problem
left is PAM, so I disabled shadow in case, PAM is present
Tue Feb 10 16:46:32 1998 Stephan Kulow <coolo@kde.org>
* configure.in: added test for nice to find out, if the option
-nice works for the screensavers
* acinclude.m4.in: port to LynxOS. For this I moved all library
search routines in KDE_MISC_TESTS, so I don't need to write this
in every package
* README: some grammar fixes
* acinclude.m4.in: search for the libs in the exec_prefix, when
it's present
Sun Feb 8 14:07:23 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: updated all packages
* libtool.m4.in: applied patch for libtool.m4.in to show the
correct default for shared and static
Sat Feb 7 10:56:00 1998 Stephan Kulow <coolo@kde.org>
* configure.in: good news - KDE is relocatable again.
* libtool.m4.in: updated to latest libtool 1.0i
Fri Feb 6 21:26:51 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: added a AC_PROVIDE for AC_PROG_CC and
AC_PROG_CPP to KDE_CHECK_COMPILERS
Thu Feb 5 16:27:47 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: put $QTDIR/bin before /usr/bin in the path to
look for moc. I don't know why, but I got a report, that configure
found /usr/bin/moc under Solaris
Fri Jan 30 15:47:50 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: export LIBRARY_PATH after reset to the saved
value
* acinclude.m4.in: unset the LIBRARY_PATH to get a relieable
result when trying to find, if Qt compiles without -L
Sat Jan 24 00:45:52 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: fixed another bug in AC_PATH_KDE
Thu Jan 22 14:46:15 1998 Stephan Kulow <coolo@kde.org>
* configure.in: fixed an ugly bug in AC_BASE_PATH_KDE
* kappfinder/kappfinder.in: let kappfinder create by configure to
allow the use of the kde_ paths
Wed Jan 21 22:19:35 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in: - added a install_root prefix to all paths, if
set, to enable package managers to move the whole installation at once
- added --with-install-root to set the install_root prefix
Tue Jan 20 22:41:04 1998 Stephan Kulow <coolo@kde.org>
* configure.in: added NOOPT_CXXFLAGS to allow kioslave to be
compiled without -O2
Mon Jan 19 21:55:21 1998 Stephan Kulow <coolo@kde.org>
* configure.in: some little fixes for the Makefiles
* acinclude.m4.in: --prefix will no longer override the search for
libraries. If they are present somewhere, they are used (through
the methodes in KApplication)
Mon Jan 12 00:30:36 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in fixed an ugly bug, that accoured, when
qt_libraries is not set (empty/equals X11/not necessary)
* acinclude.m4.in moved the remove of the files after the error
detection
Sun Jan 11 17:27:53 1998 Stephan Kulow <coolo@kde.org>
* acinclude.m4.in added a new macro KDE_CHECK_QT_DIRECT to unset
the Qt library path, if a Qt program compiles without them
* acinclude.m4.in added a return value in the CREATE_KFSSTND
macro. Perhaps this has caused the problems
Sat Jan 10 17:40:44 1998 Stephan Kulow <coolo@kde.org>
* ChangeLog started to maintain a ChangeLog file again
* acinclude.m4.in the AC_CREATE_KFSSTND to get better debug output
to find the problem
Old logs, Stephan Kulow made:
0.1 : first steps with libkde
0.2 : first release with libkde, khtmlw, kdehelp, acli, kwm, kpanel
0.3 : added kfm and bugfixes
0.4 : updated khtmlw, kdehelp, kwm, changed install in all subdirs
0.5 : support libtool (chooseable shared libs)
0.6 : split libkde in kdecore and kdeui
0.6.1 : Bugfixes
0.7 : added code from Janos Farkas (configure)
: added @{kde,qt}_{includes,libraries}@
0.7.1: Bugfixes
0.7.2: Bugfixes
0.7.3: added @all_includes@ and @all_libraries@
replaced all incompatible flags like $(CC) and -DHAVE_UNISTD_H
0.7.4: changed support for libkde (back in it's own)
added kpat
updated kpanel, kwm, kghostview
0.8: removed a bug in kghostview
lifted installation process of several apps
splitt kdebase into kdelibs and kdeapps
updated khtmlw, kfm and kdehelp
added kcalc and kpaint
updated kdisplay
added kscreensaver
added --enable-kscreensaver
added --enable-debug (and @CXXFLAGS@ to all Makefile.ins)
updated kwm to 0.4.7
added make uninstall to every app
added kvt
added khexdit
added .kdelnk for kmines, kedit, ktetris
put kwm, kfind's .kdelnk in the right directories
replaced --enable-kscreensaver by --disable-kscreensaver
updated kpanel to 0.15
some bugfixes (thanks Marco)
some bugfixes (thanks Martin)
changed acinclude.m4, because aclocal won't
updated kwm to 0.4.8 (patched it again for Qt-1.2)
updated kvt to 0.13 (patch from Matthias)
patched kvt and kwm
updated kwm to 0.5.0
updated kvt for 0.14 (again and again :-)
updated kview to 0.10
updated kfm to 0.6.3
patched kscreensaver for FreeBSD (thanks Marc)
0.9: updated kdisplay to 0.5.3
added klogout
patches from Matthias
updated kfm to 0.6.4
updated kghostview to 0.4
added QTINC and QTLIB
updated kdehelp to 0.4.11
patched kfm to support ktoolbar
updated kedit to kedit+
added kfontmanager 0.2.1
0.9.1: changed kpaint's make style
bugfixing
updated kmines to 0.6.5
updated ktetris to 0.2.4
changed to Makefiles to depend on Makefile.in
changed the Makefiles to let install depend on all
added kjots-0.2.2
updated kjots-0.2.3
updated kfm to 0.6.6
updated kjots-0.2.4
updated kpaint-0.2
updated kedit to 0.5
updated kfontmanager to 0.2.2
updated kfm to 0.6.7
updated ktetris to 0.2.5
updated kjots to 0.2.5
0.10: added HAVE_SQRTL
added HAVE_CRYPT_H
updated kfind
updated kfm to kfm-0.8.1
re-introduced automake to kdebase
bugfixes for the configure.in
added XPM, GL and PAM tests to configure
added morph3d to kscreensavers
updated kfind to 0.3.2
added some patches for SGI
... lost the time to maintain a Changelog ;)
-161
View File
@@ -1,161 +0,0 @@
## generate API documentation with doxygen
apidox-am-yes:
@if test "$(subdir)" != "."; then \
$(mkinstalldirs) $(top_builddir)/apidocs/$(subdir) ;\
if test ! -x $(top_builddir)/apidocs/common; then \
if test -d $(top_srcdir)/doc/common; then \
common_dir=`cd $(top_srcdir)/doc/common && pwd` ;\
else \
common_dir=$(kde_libs_htmldir)/en/common ;\
fi ;\
$(LN_S) $$common_dir $(top_builddir)/apidocs/common; \
fi ;\
cp $(top_srcdir)/admin/Doxyfile.global Doxyfile; \
echo "PROJECT_NAME = \"$(subdir) Library\"" >> Doxyfile; \
echo "INPUT = $(srcdir)" >> Doxyfile; \
echo "IMAGE_PATH = $(top_srcdir)/doc/api" >> Doxyfile ;\
echo "OUTPUT_DIRECTORY = $(top_builddir)/apidocs" >> Doxyfile; \
echo "HTML_OUTPUT = $(subdir)/html" >> Doxyfile; \
echo "LATEX_OUTPUT = $(subdir)/latex" >> Doxyfile; \
echo "RTF_OUTPUT = $(subdir)/rtf" >> Doxyfile; \
echo "MAN_OUTPUT = $(subdir)/man" >> Doxyfile; \
echo "GENERATE_HTML = $(GENERATE_FLAG)" >> Doxyfile ;\
echo "GENERATE_MAN = $(GENERATE_FLAG)" >> Doxyfile ;\
echo "GENERATE_LATEX = $(GENERATE_FLAG)" >> Doxyfile ;\
if test -n "$(DOXYGEN_EXCLUDE)"; then \
echo "EXCLUDE_PATTERNS += $(DOXYGEN_EXCLUDE)" >> Doxyfile; \
fi ;\
echo "TAGFILES = \\" >> Doxyfile; \
tags='$(DOXYGEN_REFERENCES) qt'; for tag in $$tags; do \
tagpath= ;\
path="../../$$tag" ;\
if test -f $(top_builddir)/apidocs/$$tag/$$tag.tag; then \
tagpath="$(top_builddir)/apidocs/$$tag/$$tag.tag" ;\
else \
tagpath=`ls -1 $(kde_htmldir)/en/*-apidocs/$$tag/$$tag.tag 2> /dev/null` ;\
if test -n "$$tagpath"; then \
path=`echo $$tagpath | sed -e "s,.*/\([^/]*-apidocs\)/$$tag/$$tag.tag,../../../\1/$$tag,"` ;\
fi ;\
fi ;\
if test "$$tag" = qt; then \
echo $$tagpath=$(QTDOCDIR) >> Doxyfile ;\
else if test -n "$$tagpath"; then \
echo "$$tagpath=$$path/html \\" >> Doxyfile ;\
fi ;\
fi ;\
done ;\
echo "GENERATE_TAGFILE = $(top_builddir)/apidocs/$(subdir)/$(subdir).tag" >> Doxyfile ;\
echo "IGNORE_PREFIX = K" >> Doxyfile ;\
echo "HAVE_DOT = $(KDE_HAVE_DOT)" >> Doxyfile ;\
$(DOXYGEN) Doxyfile ;\
fi
apidox-am-no:
install-data-local: install-apidox
## install API documentation
install-apidox:
echo "$(subdir)"
@if test "$(subdir)" != "."; then \
$(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir)/html ; \
if test -f $(top_builddir)/apidocs/$(subdir)/$(subdir).tag; then \
echo $(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/$(subdir).tag $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); \
$(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/$(subdir).tag $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); \
fi; \
if test -d $(top_builddir)/apidocs/$(subdir)/html; then \
list=`ls $(top_builddir)/apidocs/$(subdir)/html`; \
for file in $$list; do \
echo $(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/html/$$file $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir)/html; \
$(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/html/$$file $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir)/html; \
done; \
fi; \
rm -f $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/common; \
$(LN_S) $(kde_libs_htmldir)/en/common $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/common; \
else\
$(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs ;\
list=`cd $(top_builddir)/apidocs && ls -1`; \
for file in $$list; do \
if test -f $(top_builddir)/apidocs/$$file; then \
echo $(INSTALL_DATA) $(top_builddir)/apidocs/$$file $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; \
$(INSTALL_DATA) $(top_builddir)/apidocs/$$file $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; \
fi; \
done ;\
fi
uninstall-local: uninstall-apidox
## uninstall API documentation
uninstall-apidox:
@if test "$(subdir)" != "."; then \
if test -d $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); then \
rm -rfv $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); \
fi\
else\
if test -d $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; then \
rm -rfv $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; \
fi\
fi
apidox:
@if test "$(subdir)" != "."; then \
$(MAKE) apidox-am-@KDE_HAS_DOXYGEN@ ;\
else \
$(MAKE) apidox-am-toplevel-@KDE_HAS_DOXYGEN@ ;\
fi
@set fnord $(MAKEFLAGS); amf=$$2; if test -n '$(SUBDIRS)'; then \
list='$(SUBDIRS)'; \
for subdir in $$list; do \
if grep '^include .*Doxyfile.am' $(srcdir)/$$subdir/Makefile.am; then \
echo "Making apidox in $$subdir"; \
if test "$$subdir" != "."; then \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) GENERATE_FLAG=no apidox) || exit 1; \
fi ; fi ;\
done; \
for subdir in $$list; do \
if grep '^include .*Doxyfile.am' $(srcdir)/$$subdir/Makefile.am; then \
echo "Making apidox in $$subdir"; \
if test "$$subdir" != "."; then \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) GENERATE_FLAG=yes apidox) || exit 1; \
fi ; fi ;\
done; \
fi
apidox-am-toplevel-yes:
@echo "*** Creating API documentation main page"; \
cp $(top_srcdir)/admin/Doxyfile.global Doxyfile; \
echo "PROJECT_NAME = $(DOXYGEN_PROJECT_NAME)" >> Doxyfile ; \
echo "PROJECT_NUMBER = $(DOXYGEN_PROJECT_NUMBER)" >> Doxyfile ; \
echo "INPUT = $(top_srcdir)" >> Doxyfile ; \
echo "OUTPUT_DIRECTORY = $(top_builddir)/apidocs" >> Doxyfile ; \
echo "FILE_PATTERNS = *.dox" >> Doxyfile ; \
echo "RECURSIVE = NO" >> Doxyfile ; \
echo "SOURCE_BROWSER = NO" >> Doxyfile ; \
echo "ALPHABETICAL_INDEX = NO" >> Doxyfile ; \
echo "HTML_OUTPUT = ." >> Doxyfile ; \
echo "HTML_HEADER = apidocs/common/mainheader.html" >> Doxyfile ; \
echo "HTML_FOOTER = apidocs/common/mainfooter.html" >> Doxyfile ; \
echo "HTML_STYLESHEET = apidocs/common/doxygen.css" >> Doxyfile ; \
echo "GENERATE_LATEX = NO" >> Doxyfile ; \
echo "GENERATE_RTF = NO" >> Doxyfile ; \
echo "GENERATE_MAN = NO" >> Doxyfile ; \
echo "GENERATE_XML = NO" >> Doxyfile ; \
echo "GENERATE_AUTOGEN_DEF = NO" >> Doxyfile ; \
echo "ENABLE_PREPROCESSING = NO" >> Doxyfile ; \
echo "CLASS_DIAGRAMS = NO" >> Doxyfile ; \
echo "HAVE_DOT = NO" >> Doxyfile ; \
echo "GENERATE_HTML = YES" >> Doxyfile ;\
$(mkinstalldirs) $(top_builddir)/apidocs ; \
rm -f $(top_builddir)/apidocs/common ; \
if test -d $(top_srcdir)/doc/common; then \
common_dir=`cd $(top_srcdir)/doc/common && pwd` ;\
else \
common_dir=$(kde_libs_htmldir)/en/common ;\
fi ;\
$(LN_S) $$common_dir $(top_builddir)/apidocs/common ;\
doxygen Doxyfile; \
rm -f Doxyfile
# Local Variables:
# mode: makefile
# End:
-950
View File
@@ -1,950 +0,0 @@
# Doxyfile 1.2.15
# 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 (" ")
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
PROJECT_NAME =
# 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 = "Version 3.0"
# 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 = ../apidocs/
# 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:
# Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French,
# German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish,
# Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish.
OUTPUT_LANGUAGE = English
# 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 = YES
# 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 = 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 class will be included in the various
# overviews. This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_CLASSES = YES
# 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
# 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 = YES
# 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 = NO
# 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. It is allowed to use relative paths in the argument list.
STRIP_FROM_PATH =
# 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
# 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 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
# users are adviced to set this option to NO.
CASE_SENSE_NAMES = YES
# 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 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 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
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
# will put list of the files that are included by a file in the documentation
# of that file.
SHOW_INCLUDE_FILES = YES
# 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 the Qt-style comments (thus requiring an
# explict @brief command for a brief description.
JAVADOC_AUTOBRIEF = YES
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# reimplements.
INHERIT_DOCS = 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 = NO
# 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
# 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 = 4
# 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 = NO
# 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 = NO
# 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
# 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 = libdoc=@mainpage \
sect=<p><b> \
reimplemented= \
"deprecated=<b>This class or method is obsolete, it is provided for compatibility only.</b>" \
obsolete=@deprecated
# 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 consist 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 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 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
#---------------------------------------------------------------------------
# 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 = YES
# 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 = 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.
WARN_FORMAT =
# 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 =
# 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
FILE_PATTERNS = *.h \
*.cpp \
*.cc \
*.hpp
# 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 = YES
# 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.
EXCLUDE_PATTERNS = *.moc.* \
moc* \
*.all_cpp.* \
*unload.* \
*/test/* \
*/tests/*
# 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.
INPUT_FILTER =
# 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.
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.
SOURCE_BROWSER = YES
# Setting the INLINE_SOURCES tag to YES will include the body
# of functions and classes directly in the documentation.
INLINE_SOURCES = NO
# If the REFERENCED_BY_RELATION tag is set to YES (the default)
# then for each documented function all documented
# functions referencing it will be listed.
REFERENCED_BY_RELATION = YES
# If the REFERENCES_RELATION tag is set to YES (the default)
# then for each documented function all documented entities
# called/used by that function will be listed.
REFERENCES_RELATION = 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 = YES
# 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 = 3
# 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 = K
#---------------------------------------------------------------------------
# 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 = NO
# 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 =
# 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 = ../apidocs/common/header.html
# 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 = ../apidocs/common/footer.html
# 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
HTML_STYLESHEET = ../apidocs/common/doxygen.css
# 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 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 compressed HTML help file (.chm)
# of the generated HTML documentation.
GENERATE_HTMLHELP = NO
# 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 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
# 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 = YES
# 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
# If the GENERATE_TREEVIEW tag 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 and frames is required (for instance Mozilla, Netscape 4.0+,
# or Internet explorer 4.0+). Note that for large projects the tree generation
# can take a very long time. In such cases it is better to disable this feature.
# Windows users are probably better off using the HTML help feature.
GENERATE_TREEVIEW = 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
#---------------------------------------------------------------------------
# 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 =
# 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 = NO
# 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 = NO
# 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
#---------------------------------------------------------------------------
# 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 optimised 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 =
# 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 assigments. 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 =
# The MAN_EXTENSION tag determines the extension that is added to
# the generated man pages (default is the subroutine's section .3)
MAN_EXTENSION = .kde3
# 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 = YES
#---------------------------------------------------------------------------
# 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. Note that this
# feature is still experimental and incomplete at the
# moment.
GENERATE_XML = NO
#---------------------------------------------------------------------------
# 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 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_PREDEFINED 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.
PREDEFINED = QT_VERSION=305
# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY 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 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::addtions related to external references
#---------------------------------------------------------------------------
# The TAGFILES tag can be used to specify one or more tagfiles.
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 = NO
# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of `which perl').
PERL_PATH =
#---------------------------------------------------------------------------
# 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 superceded by the HAVE_DOT option below. This is only a fallback. It is
# recommended to install and use dot, since it yield more powerful graphs.
CLASS_DIAGRAMS = 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
# 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 set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances.
TEMPLATE_RELATIONS = YES
# 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 = 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 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 = NO
# 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 on 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 MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
# (in pixels) of the graphs generated by dot. If a graph becomes larger than
# this value, doxygen will try to truncate the graph, so that it fits within
# the specified constraint. Beware that most browsers cannot cope with very
# large images.
MAX_DOT_GRAPH_WIDTH = 800
# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
# (in pixels) of the graphs generated by dot. If a graph becomes larger than
# this value, doxygen will try to truncate the graph, so that it fits within
# the specified constraint. Beware that most browsers cannot cope with very
# large images.
MAX_DOT_GRAPH_HEIGHT = 1024
# 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 intermedate dot files that are used to generate
# the various graphs.
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
#---------------------------------------------------------------------------
# The SEARCHENGINE tag specifies whether or not a search engine should be
# used. If set to NO the values of all tags below this one will be ignored.
SEARCHENGINE = NO
# The CGI_NAME tag should be the name of the CGI script that
# starts the search engine (doxysearch) with the correct parameters.
# A script with this name will be generated by doxygen.
CGI_NAME =
# The CGI_URL tag should be the absolute URL to the directory where the
# cgi binaries are located. See the documentation of your http daemon for
# details.
CGI_URL =
# The DOC_URL tag should be the absolute URL to the directory where the
# documentation is located. If left blank the absolute path to the
# documentation, with file:// prepended to it, will be used.
DOC_URL =
# The DOC_ABSPATH tag should be the absolute path to the directory where the
# documentation is located. If left blank the directory on the local machine
# will be used.
DOC_ABSPATH =
# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
# is installed.
BIN_ABSPATH =
# The EXT_DOC_PATHS tag can be used to specify one or more paths to
# documentation generated for other projects. This allows doxysearch to search
# the documentation for these projects as well.
EXT_DOC_PATHS =
-34
View File
@@ -1,34 +0,0 @@
### Makefile.common
###
### Copyright (C) 2002 by the KDE developers
### All the real work is done by the shellscript cvs.sh
SHELL=/bin/sh
cvs dist cvs-clean configure.in configure.files subdirs package-messages:
@admindir=$(admindir); \
if test "x$$admindir" = x; then \
admindir=.; until test -f $$admindir/admin/cvs.sh; do \
admindir=$$admindir/..; \
if test `cd $$admindir && pwd` = / ; then break; fi; \
done; \
admindir=$$admindir/admin; \
if test -f $$admindir/cvs.sh; then :; else \
echo "Can't find the admin/ directory in any parent of the"; \
echo "current directory. Please set it with admindir=..."; \
exit 1; \
fi; \
fi; \
MAKE=$(MAKE) $(SHELL) $$admindir/cvs.sh $@
package-merge:
@MAKE=$(MAKE) POFILES=$(POFILES) PACKAGE=$(PACKAGE) \
$(SHELL) admin/cvs.sh package-merge
configure.in: configure.files $(shell test -f configure.files && cat configure.files) subdirs
configure.files: subdirs
.SILENT:
.PHONY: cvs dist cvs-clean package-merge package-messages
File diff suppressed because it is too large Load Diff
-1999
View File
File diff suppressed because it is too large Load Diff
-177
View File
@@ -1,177 +0,0 @@
#!/usr/bin/perl -w
# this script patches a config.status file, to use our own perl script
# in the main loop
# we do it this way to circumvent hacking (and thereby including)
# autoconf function (which are GPL) into our LGPL acinclude.m4.in
# written by Michael Matz <matz@kde.org>
# adapted by Dirk Mueller <mueller@kde.org>
#
# This file is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
# 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
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public License
# along with this library; see the file COPYING.LIB. If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# we have to change two places
# 1. the splitting of the substitutions into chunks of 90 (or even 48 in
# later autoconf's
# 2. the big main loop which patches all Makefile.in's
use File::Basename;
my $ac_aux_dir = dirname($0);
my ($flag);
local $ac_version = 0;
my $vpath_seen = 0;
$flag = 0;
while (<>) {
# usage of $flag: 0 -- we have seen nothing yet
# 1 -- we are in (1)
# 2 -- we have ended (1)
# 3 -- we are in (2)
# 4 -- we ended (2)
if ($flag == 4) {
print;
} elsif ($flag == 0) {
# 1. begins with (including): "ac_max_sed_\S+\s*=\s*[0-9]+..."
# ends with (excluding) "CONFIG_FILE=..."
# in later autoconf (2.14.1) there is no CONFIG_FILES= line,
# but instead the (2) directly follow (1)
if (/^\s*ac_max_sed_([a-z]+).*=\s*([0-9]+)/ ) {
$flag = 1;
if ($1 eq 'lines') {
# lets hope its different with 2141,
# wasn't able to verify that
if ($2 eq '48') {
$ac_version = 250;
}
else {
$ac_version = 2141;
}
} elsif ($1 eq 'cmds') {
$ac_version = 213;
}
# hmm, we don't know the autoconf version, but we try anyway
} else {
print;
}
} elsif ($flag == 1) {
if (/^\s*CONFIG_FILES=/ && ($ac_version != 250)) {
print;
$flag = 2;
} elsif (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) {
$flag = 3;
}
} elsif ($flag == 2) {
# 2. begins with: "for ac_file in.*CONFIG_FILES" (the next 'for' after (1))
# end with: "rm -f conftest.s\*"
# on autoconf 250, it ends with '# CONFIG_HEADER section'
if (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) {
$flag = 3;
} else {
print;
}
} elsif ($flag == 3) {
if (/^\s*rm\s+-f\s+conftest/ ) {
$flag = 4;
&insert_main_loop();
} elsif (/^\s*rm\s+-f\s+.*ac_cs_root/ ) {
$flag = 4;
&insert_main_loop();
#die "hhhhhhh";
if ($ac_version != 2141) {
print STDERR "hmm, don't know autoconf version\n";
}
} elsif (/^\#\s*CONFIG_HEADER section.*/) {
$flag = 4;
&insert_main_loop();
if($ac_version != 250) {
print STDERR "hmm, something went wrong :-(\n";
}
} elsif (/VPATH/ ) {
$vpath_seen = 1;
}
}
}
die "wrong input (flag != 4)" unless $flag == 4;
print STDERR "hmm, don't know autoconf version\n" unless $ac_version;
sub insert_main_loop {
if ($ac_version == 250) {
&insert_main_loop_250();
}
else {
&insert_main_loop_213();
}
}
sub insert_main_loop_250 {
print <<EOF;
#echo Doing the fast build of Makefiles -- autoconf $ac_version
EOF
if ($vpath_seen) {
print <<EOF;
# VPATH subst was seen in original config.status main loop
echo '/^[ ]*VPATH[ ]*=[^:]*\$/d' >>\$tmp/subs.sed
EOF
}
print <<EOF;
rm -f \$tmp/subs.files
for ac_file in .. \$CONFIG_FILES ; do
if test "x\$ac_file" != x..; then
echo \$ac_file >> \$tmp/subs.files
fi
done
if test -f \$tmp/subs.files ; then
perl $ac_aux_dir/config.pl "\$tmp/subs.sed" "\$tmp/subs.files" "\$srcdir" "\$INSTALL"
fi
rm -f \$tmp/subs.files
fi
EOF
return;
}
sub insert_main_loop_213 {
print <<EOF;
#echo Doing the fast build of Makefiles -- autoconf $ac_version
if test "x\$ac_cs_root" = "x" ; then
ac_cs_root=conftest
fi
EOF
if ($vpath_seen) {
print <<EOF;
# VPATH subst was seen in original config.status main loop
echo '/^[ ]*VPATH[ ]*=[^:]*\$/d' >> \$ac_cs_root.subs
EOF
}
print <<EOF;
rm -f \$ac_cs_root.sacfiles
for ac_file in .. \$CONFIG_FILES ; do
if test "x\$ac_file" != x..; then
echo \$ac_file >> \$ac_cs_root.sacfiles
fi
done
if test -f \$ac_cs_root.sacfiles ; then
perl $ac_aux_dir/config.pl "\$ac_cs_root.subs" "\$ac_cs_root.sacfiles" "\$ac_given_srcdir" "\$ac_given_INSTALL"
fi
rm -f \$ac_cs_root.s*
EOF
return;
}
-1325
View File
File diff suppressed because it is too large Load Diff
-235
View File
@@ -1,235 +0,0 @@
#!/usr/bin/perl
# a script for use by autoconf to make the Makefiles
# from the Makefile.in's
#
# the original autoconf mechanism first splits all substitutions into groups
# of ca. 90, and than invokes sed for _every_ Makefile.in and every group
# (so around 2-3 times per Makefile.in). So this takes forever, as sed
# has to recompile the regexps every time.
#
# this script does better. It changes all Makefile.ins in one process.
# in kdelibs the time for building Makefile went down from 2:59 min to 13 sec!
#
# written by Michael Matz <matz@kde.org>
# adapted by Dirk Mueller <mueller@kde.org>
# This file is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
# 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
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public License
# along with this library; see the file COPYING.LIB. If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
my $ac_subs=$ARGV[0];
my $ac_sacfiles = $ARGV[1];
my $ac_given_srcdir=$ARGV[2];
my $ac_given_INSTALL=$ARGV[3];
#print "ac_subs=$ac_subs\n";
#print "ac_sacfiles=$ac_sacfiles\n";
#print "ac_given_srcdir=$ac_given_srcdir\n";
#print "ac_given_INSTALL=$ac_given_INSTALL\n";
my ($srcdir, $top_srcdir);
my $INSTALL;
my $bad_perl = ($] < 5.005);
open(CF, "< $ac_subs") || die "can't open $ac_subs: $!";
my @subs = <CF>;
close(CF);
chomp @subs;
@comp_match=();
@comp_subs=();
if ($bad_perl) {
print "Using perl older than version 5.005\n";
foreach my $pat (@subs) {
if ( ($pat =~ /s%([^%]*)%([^%]*)%g/ )
|| ($pat =~ m%/([^/]*)/([^/]*)/g% )
|| ($pat =~ /s%([^%]*)%([^%]*)%;t/ )
|| ($pat =~ m%/([^/]*)/([^/]*)/;t% )
|| ($pat =~ /s,([^,]*),(.*),;t/)
) {
# form : s%bla%blubb%g
# or s%bla%blubb%;t t (autoconf > 2.13 and < 2.52 ?)
# or s,bla,blubb,;t t (autoconf 2.52)
my $srch = $1;
my $repl = $2;
$repl =~ s/\\(.)/$1/g;
push @comp_subs, make_closure($srch, $repl);
} elsif ( ($pat =~ /%([^%]*)%d/ )
|| ($pat =~ m%/([^/]*)/d% )
) {
push @comp_subs, make_closure($1, "");
} else {
die "Uhh. Malformed pattern in $ac_subs ($pat)"
unless ( $pat =~ /^\s*$/ ); # ignore white lines
}
}
} else {
foreach my $pat (@subs) {
if ( ($pat =~ /s%([^%]*)%([^%]*)%g/ ) ||
($pat =~ /s%([^%]*)%([^%]*)%;t/ ) ||
($pat =~ /s,([^,]*),(.*),;t/) ) {
# form : s%bla%blubb%g
# or s%bla%blubb%;t t (autoconf > 2.13 and < 2.52 ?)
# or s,bla,blubb,;t t (autoconf 2.52)
my $srch = $1;
my $repl = $2;
push @comp_match, eval "qr/\Q$srch\E/"; # compile match pattern
$repl =~ s/\\(.)/$1/g;
push @comp_subs, $repl;
} elsif ( ($pat =~ /%([^%]*)%d/ )
|| ($pat =~ m%/([^/]*)/d% )
) {
push @comp_match, eval "qr/\Q$1\E/";
push @comp_subs, "";
} else {
die "Uhh. Malformed pattern in $ac_cs_root.subs ($pat)"
unless ( $pat =~ /^\s*$/ ); # ignore white lines
}
}
}
undef @subs;
# read the list of files to be patched, form:
# ./Makefile arts/Makefile arts/examples/Makefile arts/flow/Makefile
open(CF, "< $ac_sacfiles") || die "can't open $ac_sacfiles: $!";
my @ac_files = <CF>;
close(CF);
chomp @ac_files;
my $ac_file;
foreach $ac_file (@ac_files) {
next if $ac_file =~ /\.\./;
next if $ac_file =~ /^\s*$/;
my $ac_file_in;
my ($ac_dir, $ac_dots, $ac_dir_suffix);
if ($ac_file =~ /.*:.*/ ) {
($ac_file_in = $ac_file) =~ s%[^:]*:%%;
$ac_file =~ s%:.*%%;
} else {
$ac_file_in = $ac_file.".in";
}
# Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
# Remove last slash and all that follows it. Not all systems have dirname.
($ac_dir = $ac_file) =~ s%/[^/][^/]*$%%;
if ( ($ac_dir ne $ac_file) && ($ac_dir ne ".")) {
# The file is in a subdirectory.
if (! -d "$ac_dir") { mkdir "$ac_dir", 0777; }
($ac_dir_suffix = $ac_dir) =~ s%^./%%;
$ac_dir_suffix="/".$ac_dir_suffix;
# A "../" for each directory in $ac_dir_suffix.
($ac_dots = $ac_dir_suffix) =~ s%/[^/]*%../%g;
} else {
$ac_dir_suffix="";
$ac_dots="";
}
if ($ac_given_srcdir eq ".") {
$srcdir=".";
if ($ac_dots) {
( $top_srcdir = $ac_dots) =~ s%/$%%;
} else { $top_srcdir="."; }
} elsif ($ac_given_srcdir =~ m%^/%) {
$srcdir=$ac_given_srcdir.$ac_dir_suffix;
$top_srcdir = $ac_given_srcdir;
} else {
$srcdir = $ac_dots.$ac_given_srcdir.$ac_dir_suffix;
$top_srcdir = $ac_dots.$ac_given_srcdir;
}
if ($ac_given_INSTALL) {
if ($ac_given_INSTALL =~ m%^/% ) {
$INSTALL = $ac_given_INSTALL;
} else {
$INSTALL = $ac_dots.$ac_given_INSTALL;
}
}
print "fast creating $ac_file\n";
unlink $ac_file;
my $ac_comsub="";
my $fname=$ac_file_in;
$fname =~ s%.*/%%;
my $configure_input="Generated automatically from $fname by config.pl.";
if ($ac_file =~ /.*[Mm]akefile.*/) {
$ac_comsub="# ".$configure_input."\n"; # for the first line in $ac_file
}
my $ac_file_inputs;
($ac_file_inputs = $ac_file_in) =~ s%^%$ac_given_srcdir/%;
$ac_file_inputs =~ s%:% $ac_given_srcdir/%g;
patch_file($ac_file, $ac_file_inputs, $ac_comsub);
}
sub patch_file {
my ($outf, $infiles, $identline) = @_;
my $filedata;
my @infiles=split(' ', $infiles);
my $i=0;
foreach my $name (@infiles) {
if (open(CF, "< $name")) {
while (<CF>) {
$filedata .= $_;
}
close(CF);
} else {
print STDERR "can't open $name: $!"."\n";
}
}
if ($identline) {
# Put the ident in the second line. For shitty automake 1.6x.
$filedata =~ s%\n%\n$identline%;
}
$filedata =~ s%\@configure_input\@%$configure_input%g;
$filedata =~ s%\@srcdir\@%$srcdir%g;
$filedata =~ s%\@top_srcdir\@%$top_srcdir%g;
$filedata =~ s%\@INSTALL\@%$INSTALL%g;
if ($bad_perl) {
while ($i <= $#comp_subs) {
my $ref = $comp_subs[$i];
&$ref(\$filedata);
$i++;
}
} else {
while ($i <= $#comp_match) {
$filedata =~ s/$comp_match[$i]/$comp_subs[$i]/g;
$i++;
}
}
open(CF, "> $outf") || die "can't create $outf: $!";
print CF $filedata;
close(CF);
}
sub make_closure {
my ($pat, $sub) = @_;
$pat =~ s/\@/\\@/g; # @bla@ -> \@bla\@
$pat =~ s/\$/\\\$/g; # $bla -> \$bla
$sub =~ s/\@/\\@/g;
$sub =~ s/\$/\\\$/g;
my $ret = eval "return sub { my \$ref=shift; \$\$ref =~ s%$pat%$sub%g; }";
if ($@) {
print "can't create CODE: $@\n";
}
return $ret;
}
-1440
View File
File diff suppressed because it is too large Load Diff
-57
View File
@@ -1,57 +0,0 @@
dnl This file is part of the KDE libraries/packages
dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
dnl This file is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Library General Public
dnl License as published by the Free Software Foundation; either
dnl version 2 of the License, or (at your option) any later version.
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Library General Public License for more details.
dnl You should have received a copy of the GNU Library General Public License
dnl along with this library; see the file COPYING.LIB. If not, write to
dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
dnl Boston, MA 02111-1307, USA.
# Original Author was Kalle@kde.org
# I lifted it in some mater. (Stephan Kulow)
# I used much code from Janos Farkas
dnl Process this file with autoconf to produce a configure script.
AC_INIT(acinclude.m4) dnl a source file from your sub dir
dnl This is so we can use kde-common
AC_CONFIG_AUX_DIR(admin)
dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
unset CDPATH
dnl Checking host/target/build systems, for make, install etc.
AC_CANONICAL_SYSTEM
dnl Perform program name transformation
AC_ARG_PROGRAM
dnl Automake doc recommends to do this only here. (Janos)
AM_INIT_AUTOMAKE(@MODULENAME@, @VERSION@) dnl searches for some needed programs
KDE_SET_PREFIX
dnl generate the config header
AM_CONFIG_HEADER(config.h) dnl at the distribution this done
dnl Checks for programs.
AC_CHECK_COMPILERS
AC_ENABLE_SHARED(yes)
AC_ENABLE_STATIC(no)
KDE_PROG_LIBTOOL
dnl for NLS support. Call them in this order!
dnl WITH_NLS is for the po files
AM_KDE_WITH_NLS
dnl KDE_USE_QT
AC_PATH_KDE
-87
View File
@@ -1,87 +0,0 @@
#! /usr/bin/perl
#
# This script recursively (beginning with the current directory)
# wipes out everything not registered in CVS.
#
# written by Oswald Buddenhagen <ossi@kde.org>
# inspired by the "old" cvs-clean target from Makefile.common
#
# This file is free software in terms of the BSD licence. That means
# that you can do anything with it except removing this license or
# the above copyright notice. There is NO WARRANTY of any kind.
#
sub rmrf()
{
my $fn = shift;
lstat ($fn);
if (-d _) {
if (opendir (DIR, $fn)) {
for my $efn (grep (!/^\.\.?$/, readdir (DIR))) {
&rmrf ($fn."/".$efn);
}
closedir (DIR);
rmdir ($fn);
}
} else {
unlink ($fn);
}
}
sub newfiles()
{
my ($indir, $incvs) = @_;
for my $n (keys (%$incvs)) { delete $$indir{$n} }
return sort (keys (%$indir));
}
sub cvsclean()
{
my $dir = shift;
my (%dirsdir, %filesdir, %dirscvs, %filescvs);
my $dnam = $dir ? $dir : ".";
if (!opendir (DIR, $dnam)) {
print STDERR "Cannot enter \"".$dnam."\".\n";
return;
}
for my $fn (grep (!/^\.\.?$/, readdir (DIR))) {
if (-d $dir.$fn) {
$fn eq "CVS" or $dirsdir{$fn} = 1;
} else {
$filesdir{$fn} = 1;
}
}
closedir (DIR);
if (!open (FILE, "<".$dir."CVS/Entries")) {
print STDERR "No CVS information in \"".$dnam."\".\n";
return;
}
while (<FILE>) {
m%^D/([^/]+)/.*$% and $dirscvs{$1} = 1;
m%^/([^/]+)/.*$% and $filescvs{$1} = 1;
}
close (FILE);
if (open (FILE, "<".$dir."CVS/Entries.Log")) {
while (<FILE>) {
m%^A D/([^/]+)/.*$% and $dirscvs{$1} = 1;
m%^A /([^/]+)/.*$% and $filescvs{$1} = 1;
m%^R D/([^/]+)/.*$% and delete $dirscvs{$1};
m%^R /([^/]+)/.*$% and delete $filescvs{$1};
}
close (FILE);
}
for my $fn (&newfiles (\%filesdir, \%filescvs)) {
print ("F ".$dir.$fn."\n");
&rmrf ($dir.$fn);
}
for my $fn (&newfiles (\%dirsdir, \%dirscvs)) {
print ("D ".$dir.$fn."\n");
&rmrf ($dir.$fn);
}
for my $fn (sort (keys (%dirscvs))) {
&cvsclean ($dir.$fn."/");
}
}
&cvsclean ("");
-492
View File
@@ -1,492 +0,0 @@
#! /bin/sh
#
# cvs.sh
#
# This file contains support code from Makefile.common
# It defines a shell function for each known target
# and then does a case to call the correct function.
call_and_fix_autoconf()
{
$AUTOCONF || exit 1
if test -r configure.in.in ; then
perl -pi -e "print \"if test \\\"x\\\$with_fast_perl\\\" = \\\"xyes\\\"; then\
\\n perl -i.bak \\\$ac_aux_dir/conf.change.pl \\\$CONFIG_STATUS\
\\\\\\n || mv \\\$CONFIG_STATUS.bak \\\$CONFIG_STATUS\
\\n rm -f \\\$CONFIG_STATUS.bak\\nfi\
\\n\" if /^\\s*chmod\\s+.*\\+x\\s+.*CONFIG_STATUS/;" configure
fi
}
strip_makefile()
{
if test -f $makefile_wo; then :; else
perl -e '$in=0; while ( <> ) { $in = 1 if ($_=~ m/^if /); print $_ unless ($in); $in = 0 if ($_ =~ m/^endif/); }' < Makefile.am.in > $makefile_wo
fi
}
check_autotool_versions()
{
AUTOCONF_VERSION=`$AUTOCONF --version | head -1`
case $AUTOCONF_VERSION in
Autoconf*2.5* | autoconf*2.5* ) : ;;
"" )
echo "*** AUTOCONF NOT FOUND!."
echo "*** KDE requires autoconf 2.52 or 2.53"
exit 1
;;
* )
echo "*** YOU'RE USING $AUTOCONF_VERSION."
echo "*** KDE requires autoconf 2.52 or 2.53"
exit 1
;;
esac
AUTOHEADER_VERSION=`$AUTOHEADER --version | head -1`
case $AUTOHEADER_VERSION in
Autoconf*2.5* | autoheader*2.5* ) : ;;
"" )
echo "*** AUTOHEADER NOT FOUND!."
echo "*** KDE requires autoheader 2.52 or 2.53 (part of autoconf)"
exit 1
;;
* )
echo "*** YOU'RE USING $AUTOHEADER_VERSION."
echo "*** KDE requires autoheader 2.52 or 2.53 (part of autoconf)"
exit 1
;;
esac
AUTOMAKE_STRING=`$AUTOMAKE --version | head -1`
case $AUTOMAKE_STRING in
automake*1.5d* )
echo "*** YOU'RE USING $AUTOMAKE_STRING."
echo "*** KDE requires automake 1.5"
exit 1
;;
automake*1.5* | automake*1.5-* | automake*1.6.* ) : ;;
"" )
echo "*** AUTOMAKE NOT FOUND!."
echo "*** KDE requires automake 1.5"
exit 1
;;
unsermake* ) :
echo "*** YOU'RE USING UNSERMAKE."
echo "*** GOOD LUCK!! :)"
;;
* )
echo "*** YOU'RE USING $AUTOMAKE_STRING."
echo "*** KDE requires automake 1.5"
exit 1
;;
esac
}
cvs()
{
check_autotool_versions
### Produce acinclude.m4
if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev/null; then
echo "*** Creating acinclude.m4"
rm -f acinclude.m4 configure.files
strip_makefile
$MAKE -f $makefile_wo top_srcdir=. ./acinclude.m4
fi
### Make new subdirs and configure.in.
### The make calls could be optimized away here,
### with a little thought.
if test -r configure.in.in; then
rm -f subdirs configure.in
echo "*** Creating list of subdirectories"
subdirs
echo "*** Creating configure.in"
configure_files
strip_makefile
$MAKE -f $makefile_wo top_srcdir=. ./configure.in || exit 1
fi
echo "*** Creating aclocal.m4"
$ACLOCAL || exit 1
echo "*** Creating configure"
call_and_fix_autoconf
if egrep "^AM_CONFIG_HEADER" configure.in >/dev/null 2>&1; then
echo "*** Creating config.h template"
$AUTOHEADER || exit 1
fi
echo "*** Creating Makefile templates"
$AUTOMAKE || exit 1
if test -z "$UNSERMAKE"; then
echo "*** Postprocessing Makefile templates"
perl admin/am_edit || exit 1
fi
if egrep "^cvs-local:" $makefile_am >/dev/null; then \
strip_makefile
$MAKE -f $makefile_wo cvs-local || exit 1
fi
echo "*** Creating date/time stamp"
touch stamp-h.in
echo "*** Finished"
echo " Don't forget to run ./configure"
echo " If you haven't done so in a while, run ./configure --help"
}
dist()
{
check_autotool_versions
###
### First build all of the files necessary to do just "make"
###
if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev/null; then
strip_makefile
$MAKE -f $makefile_wo top_srcdir=. ./acinclude.m4
fi
if test -r configure.in.in; then
subdirs
configure_files
strip_makefile
$MAKE -f $makefile_wo top_srcdir=. ./configure.in
fi
$ACLOCAL
$AUTOHEADER
$AUTOMAKE --foreign --include-deps
perl admin/am_edit
call_and_fix_autoconf
touch stamp-h.in
if grep "^cvs-local:" $makefile_am >/dev/null; then
strip_makefile
$MAKE -f $makefile_wo cvs-local
fi
###
### Then make messages
###
if test -d po; then
LIST=`find ./po -name "*.po"`
for i in $LIST; do
file2=`echo $i | sed -e "s#\.po#\.gmo#"`
msgfmt -o $file2 $i || touch $file2
done
fi
if grep "^cvs-dist-local:" $makefile_am >/dev/null; then
strip_makefile
$MAKE -f $makefile_wo cvs-dist-local
fi
}
subdir_dist()
{
$ACLOCAL
$AUTOHEADER
$AUTOMAKE --foreign --include-deps
perl ../admin/am_edit
call_and_fix_autoconf
}
configure_in()
{
rm -f configure.in configure.in.new
kde_use_qt_param=
test -f configure.files || { echo "need configure.files for configure.in"; exit 1; }
cat `egrep -v "configure.in.bot" < configure.files` > configure.in.new
echo "KDE_CREATE_SUBDIRSLIST" >> configure.in.new
if test -f Makefile.am.in; then
subdirs=`cat subdirs`
for dir in $subdirs; do
dir=`echo $dir | sed -e "s,[-+],_,g"`
echo "AM_CONDITIONAL($dir""_SUBDIR_included, test \"x\$$dir""_SUBDIR_included\" = xyes)" >> configure.in.new
done
fi
# echo "AC_OUTPUT( \\" >> configure.in.new
mfs=`find . -type d -print | fgrep -v "/." | \
sed -e "s#\./##" -e "/^debian/d" | sort`
for i in $mfs; do
topleveldir=`echo $i| sed -e "s#/.*##"`
if test -f $topleveldir/configure.in; then
continue
fi
if test -f $i/Makefile.am; then :; else
continue
fi
if test -s inst-apps; then
if grep "\"^$topleveldir\"" inst-apps > /dev/null 2>&1; then
continue
fi
fi
if test "$i" = "."; then
echo "AC_CONFIG_FILES([ Makefile ])" >> configure.in.new
else
echo "AC_CONFIG_FILES([ $i/Makefile ])" >> configure.in.new
fi
if test -n "$UNSERMAKE"; then
if test "$i" = "."; then
echo "AC_CONFIG_FILES([ Makefile.rules ])" >> configure.in.new
else
echo "AC_CONFIG_FILES([ $i/Makefile.rules ])" >> configure.in.new
fi
fi
done
egrep '^dnl AC_OUTPUT\(.*\)' `cat configure.files` | sed -e "s#^.*dnl AC_OUTPUT(\(.*\))#AC_CONFIG_FILES([ \1 ])#" >> configure.in.new
if test -n "$UNSERMAKE"; then
echo "AC_CONFIG_FILES([ MakeVars ])" >> configure.in.new
fi
echo "AC_OUTPUT" >> configure.in.new
modulename=
if test -f configure.in.in; then
if head -2 configure.in.in | egrep "^#MIN_CONFIG\(.*\)$" > /dev/null; then
kde_use_qt_param=`cat configure.in.in | sed -n -e "s/#MIN_CONFIG(\(.*\))/\1/p"`
fi
if head -2 configure.in.in | egrep "^#MIN_CONFIG" > /dev/null; then
line=`grep "^AM_INIT_AUTOMAKE(" configure.in.in`
if test -n "$line"; then
modulename=`echo $line | sed -e "s#AM_INIT_AUTOMAKE(\([^,]*\),.*#\1#"`
VERSION=`echo $line | sed -e "s#AM_INIT_AUTOMAKE([^,]*, *\([^)]*\)).*#\1#"`
fi
sed -e "s#AM_INIT_AUTOMAKE([^@].*#dnl PACKAGE set before#" \
configure.in.new > configure.in && mv configure.in configure.in.new
fi
fi
if test -z "$VERSION" || test "$VERSION" = "@VERSION@"; then
VERSION="\"3.0.7\""
fi
if test -z "$modulename" || test "$modulename" = "@MODULENAME@"; then
modulename=`pwd`;
modulename=`basename $modulename`
esc_VERSION=`echo $VERSION | sed -e "s#[^.0-9a-zA-Z]##g"`
modulename=`echo $modulename | sed -e "s#-$esc_VERSION##"`
fi
if test -n "$kde_use_qt_param"; then
sed -e "s#^dnl KDE_USE_QT#KDE_USE_QT($kde_use_qt_param)#" \
configure.in.new > configure.in && mv configure.in configure.in.new
fi
sed -e "s#@MODULENAME@#$modulename#" configure.in.new |
sed -e "s#@VERSION@#$VERSION#" > configure.in
botfiles=`cat configure.files | egrep "configure.in.bot"`
test -n "$botfiles" && cat $botfiles >> configure.in
rm -f configure.in.new
}
configure_files()
{
admindir=NO
for i in . .. ../.. ../../..; do
if test -x $i/admin; then admindir=$i/admin; break; fi
done
rm -f configure.files
touch configure.files
if test -f configure.in.in && head -2 configure.in.in | grep "^#MIN_CONFIG" > /dev/null; then
echo $admindir/configure.in.min >> configure.files
fi
test -f configure.in.in && echo configure.in.in >> configure.files
list=`find . -name "configure.in.in" -o -name "configure.in.bot" | sort`
for i in $list; do if test -f $i && test `dirname $i` != "." ; then
echo $i >> configure.files
fi; done
test -f configure.in.mid && echo configure.in.mid >> configure.files
test -f configure.in.bot && echo configure.in.bot >> configure.files
}
subdirs()
{
dirs=
compilefirst=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -1`
compilelast=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -1`
for i in `ls -1`; do
if test -f $i/Makefile.am; then
case " $compilefirst $compilelast " in
*" $i "*) ;;
*) dirs="$dirs $i"
esac
fi
done
: > ./_SUBDIRS
for d in $compilefirst; do
echo $d >> ./_SUBDIRS
done
(for d in $dirs; do
list=`sed -ne "s#^COMPILE_BEFORE_$d""[ ]*=[ ]*##p" $makefile_am | head -1`
for s in $list; do
echo $s $d
done
list=`sed -ne "s#^COMPILE_AFTER_$d""[ ]*=[ ]*##p" $makefile_am | head -1`
for s in $list; do
echo $d $s
done
echo $d $d
done ) | tsort >> ./_SUBDIRS
for d in $compilelast; do
echo $d >> ./_SUBDIRS
done
if test -f Makefile.am.in; then
cp Makefile.am.in Makefile.am
if test -n "$UNSERMAKE"; then
topsubdirs=
for i in $compilefirst $dirs $compilelast; do
vari=`echo $i | sed -e "s,[-+],_,g"`
echo "if $vari""_SUBDIR_included" >> Makefile.am
echo "$vari""_SUBDIR=$i" >> Makefile.am
echo "endif" >> Makefile.am
topsubdirs="$topsubdirs \$($vari""_SUBDIR)"
done
echo "SUBDIRS=$topsubdirs" >> Makefile.am
else
echo "SUBDIRS="'$(TOPSUBDIRS)' >> Makefile.am
fi
fi
if test -r subdirs && diff subdirs _SUBDIRS > /dev/null; then
rm -f _SUBDIRS
fi
test -r _SUBDIRS && mv _SUBDIRS subdirs || true
}
cvs_clean()
{
if test -d CVS; then :; else
echo "You don't have a toplevel CVS directory."
echo "You most certainly didn't use cvs to get these sources."
echo "But this function depends on cvs's information."
exit 1
fi
perl $admindir/cvs-clean.pl
}
package_merge()
{
catalogs=$POFILES
for cat in $catalogs; do
msgmerge -o $cat.new $cat $PACKAGE.pot
if test -s $cat.new; then
grep -v "\"POT-Creation" $cat.new > $cat.new.2
grep -v "\"POT-Creation" $cat >> $cat.new.1
if diff $cat.new.1 $cat.new.2; then
rm $cat.new
else
mv $cat.new $cat
fi
rm -f $cat.new.1 $cat.new.2
fi
done
}
package_messages()
{
rm -rf po.backup
mkdir po.backup
for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do
egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > po.backup/$i
cp po/$i po.backup/backup_$i
touch -r po/$i po.backup/backup_$i
rm po/$i
done
podir=${podir:-$PWD/po}
files=`find . -name Makefile.am | xargs egrep -l '^messages:' `
dirs=`for i in $files; do echo \`dirname $i\`; done`
tmpname="$PWD/messages.log"
if test -z "$EXTRACTRC"; then EXTRACTRC=extractrc ; fi
if test -z "$PREPARETIPS"; then PREPARETIPS=preparetips ; fi
export EXTRACTRC PREPARETIPS
for subdir in $dirs; do
test -z "$VERBOSE" || echo "Making messages in $subdir"
(cd $subdir
if test -n "`grep -e '^messages:.*rc.cpp' Makefile.am`"; then
$EXTRACTRC *.rc *.ui > rc.cpp
else
candidates=`ls -1 *.rc *.ui 2>/dev/null`
if test -n "$candidates"; then
echo "$subdir has *.rc or *.ui files, but not correct messages line"
fi
fi
if test -n "`grep -r KAboutData *.c* *.C* 2>/dev/null`"; then
echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > _translatorinfo.cpp
else echo " " > _translatorinfo.cpp
fi
perl -e '$mes=0; while (<STDIN>) { next if (/^(if|else|endif)\s/); if (/^messages:/) { $mes=1; print $_; next; } if ($mes) { if (/$\\(XGETTEXT\)/ && / -o/) { s/ -o \$\(podir\)/ _translatorinfo.cpp -o \$\(podir\)/ } print $_; } else { print $_; } }' < Makefile.am > _transMakefile
$MAKE -s -f _transMakefile podir=$podir EXTRACTRC="$EXTRACTRC" PREPARETIPS="$PREPARETIPS" \
XGETTEXT="${XGETTEXT:-xgettext} -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale -x ${includedir:-$KDEDIR/include}/kde.pot" \
messages
) 2>&1 | grep -v '^make\[1\]' > $tmpname
test -s $tmpname && { echo $subdir ; cat "$tmpname"; }
test -f $subdir/rc.cpp && rm -f $subdir/rc.cpp
rm -f $subdir/_translatorinfo.cpp
rm -f $subdir/_transMakefile
done
rm -f $tmpname
for i in `ls -1 po.backup/*.pot 2>/dev/null | sed -e "s#po.backup/##" | egrep -v '^backup_'`; do
test -f po/$i || echo "disappeared: $i"
done
for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do
msgmerge -q -o po/$i po/$i po/$i
egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > temp.pot
if test -f po.backup/$i && test -n "`diff temp.pot po.backup/$i`"; then
echo "will update $i"
msgmerge -q po.backup/backup_$i po/$i > temp.pot
mv temp.pot po/$i
else
if test -f po.backup/backup_$i; then
test -z "$VERBOSE" || echo "I'm restoring $i"
mv po.backup/backup_$i po/$i
rm po.backup/$i
else
echo "will add $i"
fi
fi
done
rm -f temp.pot
rm -rf po.backup
}
admindir=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'`
test "x$admindir" = "x$0" && admindir=.
test "x$MAKE" = x && MAKE=make
makefile_am=Makefile.am
makefile_wo=Makefile.am
if test -f Makefile.am.in; then
makefile_am=Makefile.am.in
makefile_wo=Makefile.am.in.wo
fi
# Suck in the AUTOCONF detection code
. $admindir/detect-autoconf.sh
###
### Main
###
arg=`echo $1 | tr '\-.' __`
case $arg in
cvs | dist | subdir_dist | configure_in | configure_files | subdirs | \
cvs_clean | package_merge | package_messages ) $arg ;;
* ) echo "Usage: cvs.sh <target>"
echo "Target can be one of:"
echo " cvs cvs-clean dist"
echo " configure.in configure.files"
echo " package-merge package-messages"
echo ""
echo "Usage: anything but $1"
exit 1 ;;
esac
if test -f Makefile.am.in.wo; then
rm Makefile.am.in.wo
fi
exit 0
-114
View File
@@ -1,114 +0,0 @@
#!/usr/bin/perl -w
use Shell qw(mv cp mkdir rm) ;
use File::Find;
use Cwd;
$origPwd = `pwd`;
chomp $origPwd;
$kde_confdir = "/etc/kde3";
$kde_prefix = "/usr";
$kde_bindir = "$kde_prefix/bin";
$kde_includedir = "$kde_prefix/include/kde";
$kde_libdir = "$kde_prefix/lib";
$kde_cgidir = "$kde_prefix/lib/cgi-bin";
$kde_moduledir = "$kde_prefix/lib/kde3";
$kde_appsdir = "$kde_prefix/share/applnk";
$kde_datadir = "$kde_prefix/share/apps";
$kde_htmldir = "$kde_prefix/share/doc/kde/HTML";
$kde_icondir = "$kde_prefix/share/icons";
$kde_locale = "$kde_prefix/share/locale";
$kde_mimedir = "$kde_prefix/share/mimelnk";
$kde_servicesdir = "$kde_prefix/share/services";
$kde_servicetypesdir = "$kde_prefix/share/servicetypes";
$kde_sounddir = "$kde_prefix/share/sounds";
$kde_templatesdir = "$kde_prefix/share/templates";
$kde_wallpaperdir = "$kde_prefix/share/wallpapers";
$mandir = "$kde_prefix/share/man";
$infodir = "$kde_prefix/share/info";
$sysconfdir = "/etc";
$QTDIR = "/usr/share/qt";
$IDL = "$kde_bindir/cuteidl";
$DCOPIDL = "$kde_bindir/dcopidl";
$DCOPIDL2CPP = "$kde_bindir/dcopidl2cpp";
$KDB2HTML = "$kde_bindir/kdb2html";
$MCOPIDL = "$kde_bindir/mcopidl";
$ARTSCCONFIG = "$kde_bindir/artsc-config";
if (defined $ENV{DEB_BUILD_OPTIONS} &&
$ENV{DEB_BUILD_OPTIONS} =~ /\bdebug\b/) {
$enable_debug="--enable-debug";
$enable_final="";
}
else {
$enable_debug="--disable-debug";
$enable_final="--enable-final";
}
if (@ARGV && $ARGV[0] eq 'echodirs') {
print STDOUT "export kde_confdir=$kde_confdir\n";
print STDOUT "export kde_prefix=$kde_prefix\n";
print STDOUT "export kde_bindir=$kde_bindir\n";
print STDOUT "export kde_includedir=$kde_includedir\n";
print STDOUT "export kde_libdir=$kde_libdir\n";
print STDOUT "export kde_cgidir=$kde_cgidir\n";
print STDOUT "export kde_moduledir=$kde_moduledir\n";
print STDOUT "export kde_appsdir=$kde_appsdir\n";
print STDOUT "export kde_datadir=$kde_datadir\n";
print STDOUT "export kde_htmldir=$kde_htmldir\n";
print STDOUT "export kde_icondir=$kde_icondir\n";
print STDOUT "export kde_locale=$kde_locale\n";
print STDOUT "export kde_mimedir=$kde_mimedir\n";
print STDOUT "export kde_servicesdir=$kde_servicesdir\n";
print STDOUT "export kde_servicetypesdir=$kde_servicetypesdir\n";
print STDOUT "export kde_sounddir=$kde_sounddir\n";
print STDOUT "export kde_templatesdir=$kde_templatesdir\n";
print STDOUT "export kde_wallpaperdir=$kde_wallpaperdir\n";
print STDOUT "export mandir=$mandir\n";
print STDOUT "export infodir=$infodir\n";
print STDOUT "export sysconfdir=$sysconfdir\n";
print STDOUT "export QTDIR=$QTDIR\n";
print STDOUT "export IDL=$IDL\n";
print STDOUT "export DCOPIDL=$DCOPIDL\n";
print STDOUT "export DCOPIDL2CPP=$DCOPIDL2CPP\n";
print STDOUT "export KDB2HTML=$KDB2HTML\n";
print STDOUT "export MCOPIDL=$MCOPIDL\n";
print STDOUT "export ARTSCCONFIG=$ARTSCCONFIG\n";
print STDOUT "export INSTALL_DATA=install -p -c -m 644\n";
print STDOUT "configkde=$enable_debug $enable_final --disable-rpath --prefix=\$(kde_prefix) --libexecdir=\$(kde_bindir) --sysconfdir=\$(sysconfdir) --libdir=\$(kde_libdir) --includedir=\$(kde_includedir) --with-qt-includes=/usr/include/qt --mandir=\$(mandir) --infodir=\$(infodir)\n";
print STDOUT "configkdevelop=$enable_debug $enable_final --disable-rpath --enable-docbase --enable-kdoc2 --libdir=\$(kde_libdir) --includedir=\$(kde_includedir) --with-qt-includes=/usr/include/qt --mandir=\$(mandir) --with-kdelibsdoc-dir=/usr/share/doc/kdelibs3-doc/html\n";
print STDOUT "configkdepim=$enable_debug $enable_final --disable-rpath --with-extra-includes=/usr/include/libpisock --enable-shared --prefix=\$(kde_prefix) --libexecdir=\$(kde_bindir) --with-qt-includes=/usr/include/qt --mandir=\$(mandir) --infodir=\$(infodir)\n";
exit
}
if (@ARGV && $ARGV[0] eq 'echoglobals') {
print STDOUT "[Directories]\n";
print STDOUT "dir_config=$kde_confdir\n";
print STDOUT "dir_tmp=/tmp\n";
print STDOUT "dir_socket=/tmp\n";
print STDOUT "dir_exe=$kde_bindir\n";
print STDOUT "dir_lib=$kde_libdir\n";
print STDOUT "dir_cgi=$kde_cgidir\n";
print STDOUT "dir_module=$kde_moduledir\n";
print STDOUT "dir_apps=$kde_appsdir\n";
print STDOUT "dir_data=$kde_datadir\n";
print STDOUT "dir_html=$kde_htmldir\n";
print STDOUT "dir_icon=$kde_icondir\n";
print STDOUT "dir_locale=$kde_locale\n";
print STDOUT "dir_mime=$kde_mimedir\n";
print STDOUT "dir_services=$kde_servicesdir\n";
print STDOUT "dir_servicetypes=$kde_servicetypesdir\n";
print STDOUT "dir_sound=$kde_sounddir\n";
print STDOUT "dir_templates=$kde_templatesdir\n";
print STDOUT "dir_wallpaper=$kde_wallpaperdir\n";
print STDOUT "[General]\n";
print STDOUT "TerminalApplication=x-terminal-emulator\n";
exit
}
-411
View File
@@ -1,411 +0,0 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
# Copyright 1999, 2000 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program 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 General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# `libtool' can also be set to `yes' or `no'.
depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. This file always lives in the current directory.
# Also, the AIX compiler puts `$object:' at the start of each line;
# $object doesn't have directory information.
stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u"
outname="$stripped.o"
if test "$libtool" = yes; then
"$@" -Wc,-M
else
"$@" -M
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
tru64)
# The Tru64 AIX compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
tmpdepfile1="$object.d"
tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'`
if test "$libtool" = yes; then
"$@" -Wc,-MD
else
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
if test -f "$tmpdepfile1"; then
tmpdepfile="$tmpdepfile1"
else
tmpdepfile="$tmpdepfile2"
fi
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a space and a tab in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the proprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
test -z "$dashmflag" && dashmflag=-M
( IFS=" "
case " $* " in
*" --mode=compile "*) # this is libtool, let us make it quiet
for arg
do # cycle over the arguments
case "$arg" in
"--mode=compile")
# insert --quiet before "--mode=compile"
set fnord "$@" --quiet
shift # fnord
;;
esac
set fnord "$@" "$arg"
shift # fnord
shift # "$arg"
done
;;
esac
"$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
) &
proc=$!
"$@"
stat=$?
wait "$proc"
if test "$stat" != 0; then exit $stat; fi
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
# X makedepend
(
shift
cleared=no
for arg in "$@"; do
case $cleared in no)
set ""; shift
cleared=yes
esac
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift;;
-*)
;;
*)
set fnord "$@" "$arg"; shift;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@"
) &
proc=$!
"$@"
stat=$?
wait "$proc"
if test "$stat" != 0; then exit $stat; fi
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tail +3 "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the proprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
( IFS=" "
case " $* " in
*" --mode=compile "*)
for arg
do # cycle over the arguments
case $arg in
"--mode=compile")
# insert --quiet before "--mode=compile"
set fnord "$@" --quiet
shift # fnord
;;
esac
set fnord "$@" "$arg"
shift # fnord
shift # "$arg"
done
;;
esac
"$@" -E |
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
) &
proc=$!
"$@"
stat=$?
wait "$proc"
if test "$stat" != 0; then exit $stat; fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the proprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
( IFS=" "
case " $* " in
*" --mode=compile "*)
for arg
do # cycle over the arguments
case $arg in
"--mode=compile")
# insert --quiet before "--mode=compile"
set fnord "$@" --quiet
shift # fnord
;;
esac
set fnord "$@" "$arg"
shift # fnord
shift # "$arg"
done
;;
esac
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
) &
proc=$!
"$@"
stat=$?
wait "$proc"
if test "$stat" != 0; then exit $stat; fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
-71
View File
@@ -1,71 +0,0 @@
#! /bin/sh
# Global variables...
AUTOCONF="autoconf"
AUTOHEADER="autoheader"
AUTOM4TE="autom4te"
AUTOMAKE="automake"
ACLOCAL="aclocal"
# We don't use variable here for remembering the type ... strings.
# local variables are not that portable, but we fear namespace issues with
# our includer. The repeated type calls are not that expensive.
checkAutoconf()
{
if test -x "`$WHICH autoconf-2.5x`" ; then
AUTOCONF="`$WHICH autoconf-2.5x`"
elif test -x "`$WHICH autoconf-2.53`" ; then
AUTOCONF="`$WHICH autoconf-2.53`"
elif test -x "`$WHICH autoconf-2.52`" ; then
AUTOCONF="`$WHICH autoconf-2.52`"
elif test -x "`$WHICH autoconf2.50`" ; then
AUTOCONF="`$WHICH autoconf2.50`"
fi
}
checkAutoheader()
{
if test -x "`$WHICH autoheader-2.5x`" ; then
AUTOHEADER="`$WHICH autoheader-2.5x`"
AUTOM4TE="`$WHICH autom4te-2.5x`"
elif test -x "`$WHICH autoheader-2.53`" ; then
AUTOHEADER="`$WHICH autoheader-2.53`"
AUTOM4TE="`$WHICH autom4te-2.53`"
elif test -x "`$WHICH autoheader-2.52`" ; then
AUTOHEADER="`$WHICH autoheader-2.52`"
elif test -x "`$WHICH autoheader2.50`" ; then
AUTOHEADER="`$WHICH autoheader2.50`"
fi
}
checkAutomakeAclocal ()
{
if test -z "$UNSERMAKE"; then
if test -x "`$WHICH automake-1.5`" ; then
AUTOMAKE="`$WHICH automake-1.5`"
ACLOCAL="`$WHICH aclocal-1.5`"
elif test -x "`$WHICH automake-1.6`" ; then
AUTOMAKE="`$WHICH automake-1.6`"
ACLOCAL="`$WHICH aclocal-1.6`"
fi
else
AUTOMAKE="$UNSERMAKE"
fi
}
checkWhich ()
{
WHICH=""
for i in "type -p" "which" "type" ; do
T=`$i sh`
test -x "$T" && WHICH="$i" && break
done
}
checkWhich
checkAutoconf
checkAutoheader
checkAutomakeAclocal
export WHICH AUTOHEADER AUTOCONF AUTOM4TE AUTOMAKE ACLOCAL
-251
View File
@@ -1,251 +0,0 @@
#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5 (mit/util/scripts/install.sh).
#
# Copyright 1991 by the Massachusetts Institute of Technology
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission. M.I.T. makes no representations about the
# suitability of this software for any purpose. It is provided "as is"
# without express or implied warranty.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
transformbasename=""
transform_arg=""
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
chowncmd=""
chgrpcmd=""
stripcmd=""
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=""
dst=""
dir_arg=""
while [ x"$1" != x ]; do
case $1 in
-c) instcmd="$cpprog"
shift
continue;;
-d) dir_arg=true
shift
continue;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
-s) stripcmd="$stripprog"
shift
continue;;
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
shift
continue;;
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
shift
continue;;
*) if [ x"$src" = x ]
then
src=$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst=$1
fi
shift
continue;;
esac
done
if [ x"$src" = x ]
then
echo "install: no input file specified"
exit 1
else
true
fi
if [ x"$dir_arg" != x ]; then
dst=$src
src=""
if [ -d $dst ]; then
instcmd=:
chmodcmd=""
else
instcmd=mkdir
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if [ -f $src -o -d $src ]
then
true
else
echo "install: $src does not exist"
exit 1
fi
if [ x"$dst" = x ]
then
echo "install: no destination specified"
exit 1
else
true
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if [ -d $dst ]
then
dst="$dst"/`basename $src`
else
true
fi
fi
## this sed command emulates the dirname command
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
defaultIFS='
'
IFS="${IFS-${defaultIFS}}"
oIFS="${IFS}"
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS="${oIFS}"
pathcomp=''
while [ $# -ne 0 ] ; do
pathcomp="${pathcomp}${1}"
shift
if [ ! -d "${pathcomp}" ] ;
then
$mkdirprog "${pathcomp}"
else
true
fi
pathcomp="${pathcomp}/"
done
fi
if [ x"$dir_arg" != x ]
then
$doit $instcmd $dst &&
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
else
# If we're going to rename the final executable, determine the name now.
if [ x"$transformarg" = x ]
then
dstfile=`basename $dst`
else
dstfile=`basename $dst $transformbasename |
sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
if [ x"$dstfile" = x ]
then
dstfile=`basename $dst`
else
true
fi
# Make a temp file name in the proper directory.
dsttmp=$dstdir/#inst.$$#
# Move or copy the file name to the temp name
$doit $instcmd $src $dsttmp &&
trap "rm -f ${dsttmp}" 0 &&
# and set any options; do chmod last to preserve setuid bits
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
# Now rename the file to the real destination.
$doit $rmcmd -f $dstdir/$dstfile &&
$doit $mvcmd $dsttmp $dstdir/$dstfile
fi &&
exit 0
-5399
View File
File diff suppressed because it is too large Load Diff
-5572
View File
File diff suppressed because it is too large Load Diff
-302
View File
@@ -1,302 +0,0 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program 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 General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
case "$1" in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
exec="$@"
# Suck in the AUTOCONF detection code.
admindir=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'`
test "x$admindir" = "x$0" && admindir=.
. $admindir/detect-autoconf.sh
case "$1" in
aclocal)
exec="`echo $exec|sed -e \"s^aclocal^$ACLOCAL^\"`"
;;
autoheader)
exec="`echo $exec|sed -e \"s^autoheader^$AUTOHEADER^\"`"
;;
autoconf)
exec="`echo $exec|sed -e \"s^autoconf^$AUTOCONF^\"`"
;;
automake)
exec="`echo $exec|sed -e \"s^automake^$AUTOMAKE^\"`"
;;
esac
$exec && exit 0
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case "$1" in
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing 0.3 - GNU automake"
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
aclocal)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case "$f" in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if [ ! -f y.tab.h ]; then
echo >y.tab.h
fi
if [ ! -f y.tab.c ]; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if [ ! -f lex.yy.c ]; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
fi
if [ -f "$file" ]; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo)
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
# We have makeinfo, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
fi
touch $file
;;
tar)
shift
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
fi
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar ${1+"$@"} && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar ${1+"$@"} && exit 0
fi
firstarg="$1"
if shift; then
case "$firstarg" in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" ${1+"$@"} && exit 0
;;
esac
case "$firstarg" in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" ${1+"$@"} && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequirements for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
-40
View File
@@ -1,40 +0,0 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Public domain
# $Id: mkinstalldirs,v 1.1.1.1 2003/02/03 21:19:56 mkb137 Exp $
errstatus=0
for file
do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
pathcomp=
for d
do
pathcomp="$pathcomp$d"
case "$pathcomp" in
-* ) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp"
mkdir "$pathcomp" || lasterr=$?
if test ! -d "$pathcomp"; then
errstatus=$lasterr
fi
fi
pathcomp="$pathcomp/"
done
done
exit $errstatus
# mkinstalldirs ends here
-143
View File
@@ -1,143 +0,0 @@
#! /bin/sh
# ylwrap - wrapper for lex/yacc invocations.
# Copyright 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Usage:
# ylwrap INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
# * INPUT is the input file
# * OUTPUT is file PROG generates
# * DESIRED is file we actually want
# * PROGRAM is program to run
# * ARGS are passed to PROG
# Any number of OUTPUT,DESIRED pairs may be used.
# The input.
input="$1"
shift
case "$input" in
[\\/]* | ?:[\\/]*)
# Absolute path; do nothing.
;;
*)
# Relative path. Make it absolute.
input="`pwd`/$input"
;;
esac
# The directory holding the input.
input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
# Quote $INPUT_DIR so we can use it in a regexp.
# FIXME: really we should care about more than `.' and `\'.
input_rx=`echo "$input_dir" | sed -e 's,\\\\,\\\\\\\\,g' -e 's,\\.,\\\\.,g'`
echo "got $input_rx"
pairlist=
while test "$#" -ne 0; do
if test "$1" = "--"; then
shift
break
fi
pairlist="$pairlist $1"
shift
done
# The program to run.
prog="$1"
shift
# Make any relative path in $prog absolute.
case "$prog" in
[\\/]* | ?:[\\/]*) ;;
*[\\/]*) prog="`pwd`/$prog" ;;
esac
# FIXME: add hostname here for parallel makes that run commands on
# other machines. But that might take us over the 14-char limit.
dirname=ylwrap$$
trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
mkdir $dirname || exit 1
cd $dirname
$prog ${1+"$@"} "$input"
status=$?
if test $status -eq 0; then
set X $pairlist
shift
first=yes
# Since DOS filename conventions don't allow two dots,
# the DOS version of Bison writes out y_tab.c instead of y.tab.c
# and y_tab.h instead of y.tab.h. Test to see if this is the case.
y_tab_nodot="no"
if test -f y_tab.c || test -f y_tab.h; then
y_tab_nodot="yes"
fi
while test "$#" -ne 0; do
from="$1"
# Handle y_tab.c and y_tab.h output by DOS
if test $y_tab_nodot = "yes"; then
if test $from = "y.tab.c"; then
from="y_tab.c"
else
if test $from = "y.tab.h"; then
from="y_tab.h"
fi
fi
fi
if test -f "$from"; then
# If $2 is an absolute path name, then just use that,
# otherwise prepend `../'.
case "$2" in
[\\/]* | ?:[\\/]*) target="$2";;
*) target="../$2";;
esac
# Edit out `#line' or `#' directives. We don't want the
# resulting debug information to point at an absolute srcdir;
# it is better for it to just mention the .y file with no
# path.
sed -e "/^#/ s,$input_rx,," "$from" > "$target" || status=$?
else
# A missing file is only an error for the first file. This
# is a blatant hack to let us support using "yacc -d". If -d
# is not specified, we don't want an error when the header
# file is "missing".
if test $first = yes; then
status=1
fi
fi
shift
shift
first=no
done
else
status=$?
fi
# Remove the directory.
cd ..
rm -rf $dirname
exit $status
File diff suppressed because it is too large Load Diff
-111
View File
@@ -1,111 +0,0 @@
# This file was created by autom4te-2.57.
# It contains the lists of macros which have been traced.
# It can be safely removed.
@request = (
bless( [
'0',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'configure.in'
],
{
'm4_pattern_forbid' => 1,
'AC_C_VOLATILE' => 1,
'AC_TYPE_OFF_T' => 1,
'AC_FUNC_CLOSEDIR_VOID' => 1,
'AC_REPLACE_FNMATCH' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_FUNC_STAT' => 1,
'AC_FUNC_WAIT3' => 1,
'AC_HEADER_TIME' => 1,
'AC_FUNC_LSTAT' => 1,
'AC_STRUCT_TM' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_FUNC_GETMNTENT' => 1,
'AC_TYPE_MODE_T' => 1,
'AC_FUNC_STRTOD' => 1,
'AC_CHECK_HEADERS' => 1,
'AC_FUNC_STRNLEN' => 1,
'AC_PROG_CXX' => 1,
'AC_PATH_X' => 1,
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
'AC_PROG_AWK' => 1,
'AC_HEADER_STDC' => 1,
'AC_HEADER_MAJOR' => 1,
'AC_FUNC_ERROR_AT_LINE' => 1,
'AC_PROG_GCC_TRADITIONAL' => 1,
'AC_LIBSOURCE' => 1,
'AC_FUNC_MBRTOWC' => 1,
'AC_STRUCT_ST_BLOCKS' => 1,
'AC_TYPE_SIGNAL' => 1,
'AC_TYPE_UID_T' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'AC_PROG_MAKE_SET' => 1,
'm4_pattern_allow' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_FUNC_STRERROR_R' => 1,
'AC_PROG_CC' => 1,
'AC_FUNC_FORK' => 1,
'AC_DECL_SYS_SIGLIST' => 1,
'AC_FUNC_STRCOLL' => 1,
'AC_FUNC_VPRINTF' => 1,
'AC_PROG_YACC' => 1,
'AC_INIT' => 1,
'AC_STRUCT_TIMEZONE' => 1,
'AC_FUNC_CHOWN' => 1,
'AC_SUBST' => 1,
'AC_FUNC_ALLOCA' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_FUNC_GETPGRP' => 1,
'AC_PROG_RANLIB' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_FUNC_SETPGRP' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_FUNC_MMAP' => 1,
'AC_FUNC_REALLOC' => 1,
'AC_TYPE_SIZE_T' => 1,
'AC_CHECK_TYPES' => 1,
'AC_CHECK_MEMBERS' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_FUNC_UTIME_NULL' => 1,
'AC_FUNC_SELECT_ARGTYPES' => 1,
'AC_FUNC_STRFTIME' => 1,
'AC_HEADER_STAT' => 1,
'AC_C_INLINE' => 1,
'AC_PROG_CPP' => 1,
'AC_TYPE_PID_T' => 1,
'AC_PROG_LEX' => 1,
'AC_C_CONST' => 1,
'AC_CONFIG_FILES' => 1,
'include' => 1,
'AC_FUNC_SETVBUF_REVERSED' => 1,
'AC_PROG_INSTALL' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_CHECK_LIB' => 1,
'AC_FUNC_OBSTACK' => 1,
'AC_FUNC_MALLOC' => 1,
'AC_FUNC_GETGROUPS' => 1,
'AC_FUNC_GETLOADAVG' => 1,
'AH_OUTPUT' => 1,
'AC_FUNC_FSEEKO' => 1,
'AM_PROG_CC_C_O' => 1,
'AC_FUNC_MKTIME' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AM_CONDITIONAL' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_HEADER_SYS_WAIT' => 1,
'AC_PROG_LN_S' => 1,
'AC_FUNC_MEMCMP' => 1,
'm4_include' => 1,
'AC_HEADER_DIRENT' => 1,
'AC_CHECK_FUNCS' => 1
}
], 'Request' )
);
-560
View File
@@ -1,560 +0,0 @@
m4trace:configure.in:25: -1- AC_INIT([acinclude.m4])
m4trace:configure.in:25: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.in:25: -1- m4_pattern_forbid([_AC_])
m4trace:configure.in:25: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
m4trace:configure.in:25: -1- m4_pattern_allow([^AS_FLAGS$])
m4trace:configure.in:25: -1- m4_pattern_forbid([^_?m4_])
m4trace:configure.in:25: -1- m4_pattern_forbid([^dnl$])
m4trace:configure.in:25: -1- m4_pattern_forbid([^_?AS_])
m4trace:configure.in:25: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
m4trace:configure.in:25: -1- AC_SUBST([PATH_SEPARATOR])
m4trace:configure.in:25: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
m4trace:configure.in:25: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
m4trace:configure.in:25: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
m4trace:configure.in:25: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
m4trace:configure.in:25: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
m4trace:configure.in:25: -1- AC_SUBST([exec_prefix], [NONE])
m4trace:configure.in:25: -1- AC_SUBST([prefix], [NONE])
m4trace:configure.in:25: -1- AC_SUBST([program_transform_name], [s,x,x,])
m4trace:configure.in:25: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
m4trace:configure.in:25: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
m4trace:configure.in:25: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
m4trace:configure.in:25: -1- AC_SUBST([datadir], ['${prefix}/share'])
m4trace:configure.in:25: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
m4trace:configure.in:25: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
m4trace:configure.in:25: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
m4trace:configure.in:25: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
m4trace:configure.in:25: -1- AC_SUBST([includedir], ['${prefix}/include'])
m4trace:configure.in:25: -1- AC_SUBST([oldincludedir], ['/usr/include'])
m4trace:configure.in:25: -1- AC_SUBST([infodir], ['${prefix}/info'])
m4trace:configure.in:25: -1- AC_SUBST([mandir], ['${prefix}/man'])
m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
m4trace:configure.in:25: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
#undef PACKAGE_NAME])
m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
m4trace:configure.in:25: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME])
m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
m4trace:configure.in:25: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
#undef PACKAGE_VERSION])
m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
m4trace:configure.in:25: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
#undef PACKAGE_STRING])
m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
m4trace:configure.in:25: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT])
m4trace:configure.in:25: -1- AC_SUBST([build_alias])
m4trace:configure.in:25: -1- AC_SUBST([host_alias])
m4trace:configure.in:25: -1- AC_SUBST([target_alias])
m4trace:configure.in:25: -1- AC_SUBST([DEFS])
m4trace:configure.in:25: -1- AC_SUBST([ECHO_C])
m4trace:configure.in:25: -1- AC_SUBST([ECHO_N])
m4trace:configure.in:25: -1- AC_SUBST([ECHO_T])
m4trace:configure.in:25: -1- AC_SUBST([LIBS])
m4trace:configure.in:28: -1- AC_CONFIG_AUX_DIR([admin])
m4trace:configure.in:34: -1- AC_CANONICAL_SYSTEM
m4trace:configure.in:34: -1- AC_CANONICAL_HOST
m4trace:configure.in:34: -1- AC_SUBST([build], [$ac_cv_build])
m4trace:configure.in:34: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
m4trace:configure.in:34: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
m4trace:configure.in:34: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
m4trace:configure.in:34: -1- AC_SUBST([host], [$ac_cv_host])
m4trace:configure.in:34: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
m4trace:configure.in:34: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
m4trace:configure.in:34: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
m4trace:configure.in:34: -1- AC_SUBST([target], [$ac_cv_target])
m4trace:configure.in:34: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
m4trace:configure.in:34: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
m4trace:configure.in:34: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
m4trace:configure.in:39: -1- AM_INIT_AUTOMAKE([kmess], [0.10.1])
m4trace:configure.in:39: -1- AC_PROG_INSTALL
m4trace:configure.in:39: -1- AC_PROG_INSTALL
m4trace:configure.in:39: -1- AC_SUBST([INSTALL_PROGRAM])
m4trace:configure.in:39: -1- AC_SUBST([INSTALL_SCRIPT])
m4trace:configure.in:39: -1- AC_SUBST([INSTALL_DATA])
m4trace:configure.in:39: -1- AC_SUBST([PACKAGE])
m4trace:configure.in:39: -1- AC_SUBST([VERSION])
m4trace:configure.in:39: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
m4trace:configure.in:39: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
#undef PACKAGE])
m4trace:configure.in:39: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
m4trace:configure.in:39: -1- AH_OUTPUT([VERSION], [/* Version number of package */
#undef VERSION])
m4trace:configure.in:39: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS])
m4trace:configure.in:39: -1- AC_SUBST([EXEEXT])
m4trace:configure.in:39: -1- AC_SUBST([OBJEXT])
m4trace:configure.in:39: -1- AC_SUBST([ACLOCAL])
m4trace:configure.in:39: -1- AC_SUBST([AUTOCONF])
m4trace:configure.in:39: -1- AC_SUBST([AUTOMAKE])
m4trace:configure.in:39: -1- AC_SUBST([AUTOHEADER])
m4trace:configure.in:39: -1- AC_SUBST([MAKEINFO])
m4trace:configure.in:39: -1- AC_SUBST([AMTAR])
m4trace:configure.in:39: -1- AC_SUBST([install_sh])
m4trace:configure.in:39: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
m4trace:configure.in:39: -1- AC_PROG_AWK
m4trace:configure.in:39: -1- AC_SUBST([AWK])
m4trace:configure.in:39: -1- AC_PROG_MAKE_SET
m4trace:configure.in:39: -1- AC_SUBST([SET_MAKE])
m4trace:configure.in:39: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
m4trace:configure.in:39: -1- AC_SUBST([AMDEP_TRUE])
m4trace:configure.in:39: -1- AC_SUBST([AMDEP_FALSE])
m4trace:configure.in:39: -1- AC_SUBST([DEPDIR])
m4trace:configure.in:41: -1- AC_SUBST([CONF_FILES])
m4trace:configure.in:44: -1- AC_CONFIG_HEADERS([config.h], [# update the timestamp
echo timestamp >"AS_ESCAPE(_AM_DIRNAME(config.h))/stamp-h1"
])
m4trace:configure.in:47: -1- AC_PROG_CC
m4trace:configure.in:47: -1- AC_SUBST([CC])
m4trace:configure.in:47: -1- AC_SUBST([CFLAGS])
m4trace:configure.in:47: -1- AC_SUBST([LDFLAGS])
m4trace:configure.in:47: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:47: -1- AC_SUBST([CC])
m4trace:configure.in:47: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.in:47: -1- AC_SUBST([CC])
m4trace:configure.in:47: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.in:47: -1- AC_SUBST([CC])
m4trace:configure.in:47: -1- AC_SUBST([CC])
m4trace:configure.in:47: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.in:47: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
m4trace:configure.in:47: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
m4trace:configure.in:47: -1- AC_SUBST([am__include])
m4trace:configure.in:47: -1- AC_SUBST([am__quote])
m4trace:configure.in:47: -1- AC_SUBST([CCDEPMODE])
m4trace:configure.in:47: -1- AC_PROG_CPP
m4trace:configure.in:47: -1- AC_SUBST([CPP])
m4trace:configure.in:47: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:47: -1- AC_SUBST([CPP])
m4trace:configure.in:47: -1- AC_PROG_CXX
m4trace:configure.in:47: -1- AC_SUBST([CXX])
m4trace:configure.in:47: -1- AC_SUBST([CXXFLAGS])
m4trace:configure.in:47: -1- AC_SUBST([LDFLAGS])
m4trace:configure.in:47: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:47: -1- AC_SUBST([CXX])
m4trace:configure.in:47: -1- AC_SUBST([ac_ct_CXX])
m4trace:configure.in:47: -1- AC_SUBST([CXXDEPMODE])
m4trace:configure.in:47: -1- AC_SUBST([WOVERLOADED_VIRTUAL])
m4trace:configure.in:47: -1- AC_SUBST([USE_EXCEPTIONS])
m4trace:configure.in:47: -1- AC_SUBST([USE_RTTI])
m4trace:configure.in:47: -1- AC_SUBST([CXXCPP])
m4trace:configure.in:47: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:47: -1- AC_SUBST([CXXCPP])
m4trace:configure.in:47: -1- AC_SUBST([NOOPT_CXXFLAGS])
m4trace:configure.in:47: -1- AC_SUBST([NOOPT_CFLAGS])
m4trace:configure.in:47: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TEMPLATE_REPOSITORY])
m4trace:configure.in:47: -1- AH_OUTPUT([HAVE_TEMPLATE_REPOSITORY], [/* C++ compiler supports template repository */
#undef HAVE_TEMPLATE_REPOSITORY])
m4trace:configure.in:47: -1- AC_SUBST([REPO])
m4trace:configure.in:47: -1- AC_SUBST([NOREPO])
m4trace:configure.in:47: -1- AC_SUBST([KDE_USE_FINAL_TRUE])
m4trace:configure.in:47: -1- AC_SUBST([KDE_USE_FINAL_FALSE])
m4trace:configure.in:47: -1- AC_SUBST([KDE_USE_CLOSURE_TRUE])
m4trace:configure.in:47: -1- AC_SUBST([KDE_USE_CLOSURE_FALSE])
m4trace:configure.in:50: -1- AC_PROG_LIBTOOL
m4trace:configure.in:50: -1- AC_PROG_LN_S
m4trace:configure.in:50: -1- AC_SUBST([LN_S], [$as_ln_s])
m4trace:configure.in:50: -1- AC_SUBST([ECHO])
m4trace:configure.in:50: -1- AC_SUBST([RANLIB])
m4trace:configure.in:50: -1- AC_SUBST([ac_ct_RANLIB])
m4trace:configure.in:50: -1- AC_SUBST([STRIP])
m4trace:configure.in:50: -1- AC_SUBST([ac_ct_STRIP])
m4trace:configure.in:50: -1- AC_CHECK_HEADERS([dlfcn.h])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H])
m4trace:configure.in:50: -1- AC_HEADER_STDC
m4trace:configure.in:50: -1- AC_SUBST([EGREP])
m4trace:configure.in:50: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
m4trace:configure.in:50: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS])
m4trace:configure.in:50: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H])
m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H])
m4trace:configure.in:50: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
[lt_cv_dlopen="dlopen"],
[AC_CHECK_LIB([dl], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
[AC_CHECK_LIB([svld], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
[AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
])
])
])
m4trace:configure.in:50: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
[AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
])
m4trace:configure.in:50: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
m4trace:configure.in:50: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
m4trace:configure.in:50: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
[lt_cv_dlopen="dlopen"],
[AC_CHECK_LIB([dl], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
[AC_CHECK_LIB([svld], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
[AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
])
])
])
m4trace:configure.in:50: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
[AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
])
m4trace:configure.in:50: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
m4trace:configure.in:50: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
m4trace:configure.in:50: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
[lt_cv_dlopen="dlopen"],
[AC_CHECK_LIB([dl], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
[AC_CHECK_LIB([svld], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
[AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
])
])
])
m4trace:configure.in:50: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
[AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
])
m4trace:configure.in:50: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
m4trace:configure.in:50: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
m4trace:configure.in:50: -1- AC_SUBST([LIBTOOL])
m4trace:configure.in:50: -1- AC_SUBST([KDE_PLUGIN])
m4trace:configure.in:54: -1- AC_SUBST([MSGFMT])
m4trace:configure.in:54: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT])
m4trace:configure.in:54: -1- AC_SUBST([GMSGFMT])
m4trace:configure.in:54: -1- AC_SUBST([MSGFMT])
m4trace:configure.in:54: -1- AC_SUBST([XGETTEXT])
m4trace:configure.in:54: -1- AC_SUBST([XGETTEXT])
m4trace:configure.in:57: -1- AC_CHECK_LIB([util], [main], [LIBUTIL="-lutil"])
m4trace:configure.in:57: -1- AC_SUBST([LIBUTIL])
m4trace:configure.in:57: -1- AC_CHECK_LIB([compat], [main], [LIBCOMPAT="-lcompat"])
m4trace:configure.in:57: -1- AC_SUBST([LIBCOMPAT])
m4trace:configure.in:57: -2- AC_CHECK_LIB([c], [crypt], [kde_have_crypt=yes], [
AC_MSG_WARN([you have no crypt in either libcrypt or libc.
You should install libcrypt from another source or configure with PAM
support])
kde_have_crypt=no
])
m4trace:configure.in:57: -1- AC_CHECK_LIB([crypt], [crypt], [LIBCRYPT="-lcrypt"; kde_have_crypt=yes], [echo "$as_me:$LINENO: checking for crypt in -lc" >&5
echo $ECHO_N "checking for crypt in -lc... $ECHO_C" >&6
if test "${ac_cv_lib_c_crypt+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lc $LIBS"
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char crypt ();
int
main ()
{
crypt ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_c_crypt=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_c_crypt=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_c_crypt" >&5
echo "${ECHO_T}$ac_cv_lib_c_crypt" >&6
if test $ac_cv_lib_c_crypt = yes; then
kde_have_crypt=yes
else
{ echo "$as_me:$LINENO: WARNING: you have no crypt in either libcrypt or libc.
You should install libcrypt from another source or configure with PAM
support" >&5
echo "$as_me: WARNING: you have no crypt in either libcrypt or libc.
You should install libcrypt from another source or configure with PAM
support" >&2;}
kde_have_crypt=no
fi
])
m4trace:configure.in:57: -1- AC_SUBST([LIBCRYPT])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CRYPT])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_CRYPT], [/* Defines if your system has the crypt function */
#undef HAVE_CRYPT])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([socklen_t])
m4trace:configure.in:57: -1- AH_OUTPUT([socklen_t], [/* Define the real type of socklen_t */
#undef socklen_t])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([ksize_t])
m4trace:configure.in:57: -1- AH_OUTPUT([ksize_t], [/* Compatibility define */
#undef ksize_t])
m4trace:configure.in:57: -1- AC_CHECK_LIB([dnet], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"])
m4trace:configure.in:57: -1- AC_CHECK_LIB([dnet_stub], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"])
m4trace:configure.in:57: -1- AC_CHECK_LIB([nsl], [inet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"])
m4trace:configure.in:57: -1- AC_CHECK_LIB([socket], [connect], [X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"], [], [$X_EXTRA_LIBS])
m4trace:configure.in:57: -1- AC_CHECK_LIB([posix], [remove], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"])
m4trace:configure.in:57: -2- AC_CHECK_LIB([ipc], [shmat], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"])
m4trace:configure.in:57: -1- AC_CHECK_HEADERS([crt_externs.h])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_CRT_EXTERNS_H], [/* Define to 1 if you have the <crt_externs.h> header file. */
#undef HAVE_CRT_EXTERNS_H])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NSGETENVIRON])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_NSGETENVIRON], [/* Define if your system needs _NSGetEnviron to set up the environment */
#undef HAVE_NSGETENVIRON])
m4trace:configure.in:57: -1- AC_CHECK_HEADERS([sys/types.h stdint.h])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H])
m4trace:configure.in:57: -1- AC_CHECK_LIB([poll], [poll], [LIB_POLL="-lpoll"])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([HAVE_COREAUDIO])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_COREAUDIO], [/* Define if you have the CoreAudio API */
#undef HAVE_COREAUDIO])
m4trace:configure.in:57: -1- AC_CHECK_FUNCS([res_init], [], [
kde_libs_safe="$LIBS"
LIBS="$LIBS $X_EXTRA_LIBS -lresolv"
AC_TRY_LINK(
[
#include <resolv.h>
],
[
res_init();
],
LIBRESOLV="-lresolv"
X_EXTRA_LIBS="$X_EXTRA_LIBS $LIBRESOLV"
AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function])
)
LIBS=$kde_libs_safe
])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_RES_INIT], [/* Define to 1 if you have the `res_init\' function. */
#undef HAVE_RES_INIT])
m4trace:configure.in:57: -2- AC_DEFINE_TRACE_LITERAL([HAVE_RES_INIT])
m4trace:configure.in:57: -2- AH_OUTPUT([HAVE_RES_INIT], [/* Define if you have the res_init function */
#undef HAVE_RES_INIT])
m4trace:configure.in:57: -1- AC_SUBST([LIB_POLL])
m4trace:configure.in:57: -1- AC_SUBST([FRAMEWORK_COREAUDIO])
m4trace:configure.in:57: -1- AC_SUBST([LIBSOCKET])
m4trace:configure.in:57: -1- AC_SUBST([LIBRESOLV])
m4trace:configure.in:57: -1- AC_SUBST([X_EXTRA_LIBS])
m4trace:configure.in:57: -1- AC_CHECK_LIB([ucb], [killpg], [LIBUCB="-lucb"])
m4trace:configure.in:57: -1- AC_SUBST([LIBUCB])
m4trace:configure.in:57: -1- AC_CHECK_LIB([bsd], [gethostbyname], [LIBSOCKET="-lbsd"])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
m4trace:configure.in:57: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a `int\', as computed by sizeof. */
#undef SIZEOF_INT])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
m4trace:configure.in:57: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a `long\', as computed by sizeof. */
#undef SIZEOF_LONG])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P])
m4trace:configure.in:57: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of a `char *\', as computed by sizeof. */
#undef SIZEOF_CHAR_P])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR])
m4trace:configure.in:57: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of a `char\', as computed by sizeof. */
#undef SIZEOF_CHAR])
m4trace:configure.in:57: -1- AC_CHECK_LIB([dl], [dlopen], [
LIBDL="-ldl"
ac_cv_have_dlfcn=yes
])
m4trace:configure.in:57: -1- AC_CHECK_LIB([dld], [shl_unload], [
LIBDL="-ldld"
ac_cv_have_shload=yes
])
m4trace:configure.in:57: -1- AC_SUBST([LIBDL])
m4trace:configure.in:57: -1- AC_SUBST([X_INCLUDES])
m4trace:configure.in:57: -1- AC_SUBST([X_LDFLAGS])
m4trace:configure.in:57: -1- AC_SUBST([x_libraries])
m4trace:configure.in:57: -1- AC_SUBST([x_includes])
m4trace:configure.in:57: -1- AC_CHECK_LIB([ICE], [IceConnectionNumber], [LIBSM="-lSM -lICE"], [], [$X_EXTRA_LIBS])
m4trace:configure.in:57: -1- AC_SUBST([LIBSM])
m4trace:configure.in:57: -1- AC_SUBST([X_PRE_LIBS])
m4trace:configure.in:57: -1- AC_SUBST([LIB_X11])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XINERAMA])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_XINERAMA], [/* Define if you want Xinerama support */
#undef HAVE_XINERAMA])
m4trace:configure.in:57: -1- AC_SUBST([LIBXINERAMA])
m4trace:configure.in:57: -1- AC_SUBST([X_PRE_LIBS])
m4trace:configure.in:57: -1- AC_SUBST([LIB_X11])
m4trace:configure.in:57: -1- AC_SUBST([LIBSM])
m4trace:configure.in:57: -1- AC_SUBST([X_INCLUDES])
m4trace:configure.in:57: -1- AC_SUBST([X_LDFLAGS])
m4trace:configure.in:57: -1- AC_SUBST([x_includes])
m4trace:configure.in:57: -1- AC_SUBST([x_libraries])
m4trace:configure.in:57: -1- AC_SUBST([QTE_NORTTI])
m4trace:configure.in:57: -1- AC_SUBST([LIB_XEXT])
m4trace:configure.in:57: -1- AC_CHECK_LIB([pthread], [pthread_create], [LIBPTHREAD="-lpthread" ])
m4trace:configure.in:57: -1- AC_SUBST([LIBPTHREAD])
m4trace:configure.in:57: -1- AC_CHECK_HEADERS([pthread/linuxthreads/pthread.h])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_PTHREAD_LINUXTHREADS_PTHREAD_H], [/* Define to 1 if you have the <pthread/linuxthreads/pthread.h> header file.
*/
#undef HAVE_PTHREAD_LINUXTHREADS_PTHREAD_H])
m4trace:configure.in:57: -1- AC_CHECK_LIB([lthread], [pthread_join], [LIBPTHREAD="-llthread -llgcc_r"])
m4trace:configure.in:57: -1- AC_SUBST([USE_THREADS])
m4trace:configure.in:57: -1- AC_SUBST([LIBPTHREAD])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPTHREAD])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_LIBPTHREAD], [/* Define if you have a working libpthread (will enable threaded code) */
#undef HAVE_LIBPTHREAD])
m4trace:configure.in:57: -1- AC_SUBST([KDE_MT_LDFLAGS])
m4trace:configure.in:57: -1- AC_SUBST([KDE_MT_LIBS])
m4trace:configure.in:57: -1- AC_SUBST([USER_INCLUDES])
m4trace:configure.in:57: -1- AC_SUBST([USER_LDFLAGS])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBZ])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_LIBZ], [/* Define if you have libz */
#undef HAVE_LIBZ])
m4trace:configure.in:57: -1- AC_SUBST([LIBZ])
m4trace:configure.in:57: -1- AC_SUBST([LIBZ])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPNG])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_LIBPNG], [/* Define if you have libpng */
#undef HAVE_LIBPNG])
m4trace:configure.in:57: -1- AC_SUBST([LIBPNG])
m4trace:configure.in:57: -1- AC_SUBST([LIBPNG])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBJPEG])
m4trace:configure.in:57: -1- AH_OUTPUT([HAVE_LIBJPEG], [/* Define if you have libjpeg */
#undef HAVE_LIBJPEG])
m4trace:configure.in:57: -1- AC_SUBST([LIBJPEG])
m4trace:configure.in:57: -1- AC_SUBST([qt_libraries])
m4trace:configure.in:57: -1- AC_SUBST([qt_includes])
m4trace:configure.in:57: -1- AC_SUBST([QT_INCLUDES])
m4trace:configure.in:57: -1- AC_SUBST([QT_LDFLAGS])
m4trace:configure.in:57: -1- AC_SUBST([MOC])
m4trace:configure.in:57: -1- AC_SUBST([UIC])
m4trace:configure.in:57: -1- AC_SUBST([UIC_TR])
m4trace:configure.in:57: -1- AC_SUBST([LIB_QT])
m4trace:configure.in:57: -1- AC_SUBST([LIB_QPE])
m4trace:configure.in:57: -1- AC_SUBST([kde_qtver])
m4trace:configure.in:57: -1- AC_SUBST([KDE_EXTRA_RPATH])
m4trace:configure.in:57: -1- AC_SUBST([KDE_RPATH])
m4trace:configure.in:57: -1- AC_SUBST([kde_libraries])
m4trace:configure.in:57: -1- AC_SUBST([kde_includes])
m4trace:configure.in:57: -1- AC_SUBST([KDE_LDFLAGS])
m4trace:configure.in:57: -1- AC_SUBST([KDE_INCLUDES])
m4trace:configure.in:57: -1- AC_SUBST([all_includes])
m4trace:configure.in:57: -1- AC_SUBST([all_libraries])
m4trace:configure.in:57: -1- AC_SUBST([AUTODIRS])
m4trace:configure.in:57: -1- AC_SUBST([DCOPIDL])
m4trace:configure.in:57: -1- AC_SUBST([DCOPIDL2CPP])
m4trace:configure.in:57: -1- AC_SUBST([DCOP_DEPENDENCIES])
m4trace:configure.in:57: -1- AC_SUBST([MCOPIDL])
m4trace:configure.in:57: -1- AC_SUBST([ARTSCCONFIG])
m4trace:configure.in:57: -1- AC_SUBST([KDECONFIG])
m4trace:configure.in:57: -1- AC_SUBST([MEINPROC])
m4trace:configure.in:57: -1- AC_SUBST([KDE_XSL_STYLESHEET])
m4trace:configure.in:57: -1- AC_SUBST([kde_libs_prefix])
m4trace:configure.in:57: -1- AC_SUBST([kde_libs_htmldir])
m4trace:configure.in:57: -1- AC_SUBST([kde_htmldir])
m4trace:configure.in:57: -1- AC_SUBST([kde_appsdir])
m4trace:configure.in:57: -1- AC_SUBST([kde_icondir])
m4trace:configure.in:57: -1- AC_SUBST([kde_sounddir])
m4trace:configure.in:57: -1- AC_SUBST([kde_datadir])
m4trace:configure.in:57: -1- AC_SUBST([kde_locale])
m4trace:configure.in:57: -1- AC_SUBST([kde_confdir])
m4trace:configure.in:57: -1- AC_SUBST([kde_mimedir])
m4trace:configure.in:57: -1- AC_SUBST([kde_wallpaperdir])
m4trace:configure.in:57: -1- AC_SUBST([kde_bindir])
m4trace:configure.in:57: -1- AC_SUBST([kde_templatesdir])
m4trace:configure.in:57: -1- AC_SUBST([kde_servicesdir])
m4trace:configure.in:57: -1- AC_SUBST([kde_servicetypesdir])
m4trace:configure.in:57: -1- AC_SUBST([kde_moduledir])
m4trace:configure.in:57: -1- AC_SUBST([kde_styledir])
m4trace:configure.in:57: -1- AC_SUBST([kde_widgetdir])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KDECORE], ["-lkdecore"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KDEUI], ["-lkdeui"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KIO], ["-lkio"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_SMB], ["-lsmb"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KAB], ["-lkab"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KHTML], ["-lkhtml"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KSPELL], ["-lkspell"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KPARTS], ["-lkparts"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KDEPRINT], ["-lkdeprint"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KSYCOCA], ["-lkio"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KFILE], ["-lkio"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KDECORE], ["-lkdecore"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KDEUI], ["-lkdeui"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KIO], ["-lkio"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KSYCOCA], ["-lksycoca"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_SMB], ["-lsmb"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KFILE], ["-lkfile"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KAB], ["-lkab"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KHTML], ["-lkhtml"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KSPELL], ["-lkspell"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KPARTS], ["-lkparts"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KDEPRINT], ["-lkdeprint"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KDECORE], ["-lkdecore -lXext $(LIB_QT)"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KDEUI], ["-lkdeui $(LIB_KDECORE)"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KFM], ["-lkfm $(LIB_KDECORE)"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KFILE], ["-lkfile $(LIB_KFM) $(LIB_KDEUI)"])
m4trace:configure.in:57: -1- AC_SUBST([LIB_KAB], ["-lkab $(LIB_KIMGIO) $(LIB_KDECORE)"])
m4trace:configure.in:80: -1- AC_SUBST([TOPSUBDIRS])
m4trace:configure.in:81: -1- AC_CONFIG_FILES([ Makefile ])
m4trace:configure.in:82: -1- AC_CONFIG_FILES([ doc/Makefile ])
m4trace:configure.in:83: -1- AC_CONFIG_FILES([ doc/en/Makefile ])
m4trace:configure.in:84: -1- AC_CONFIG_FILES([ kmess/Makefile ])
m4trace:configure.in:85: -1- AC_CONFIG_FILES([ kmess/actions/Makefile ])
m4trace:configure.in:86: -1- AC_CONFIG_FILES([ kmess/chat/Makefile ])
m4trace:configure.in:87: -1- AC_CONFIG_FILES([ kmess/contact/Makefile ])
m4trace:configure.in:88: -1- AC_CONFIG_FILES([ kmess/dialogs/Makefile ])
m4trace:configure.in:89: -1- AC_CONFIG_FILES([ kmess/network/Makefile ])
m4trace:configure.in:90: -1- AC_CONFIG_FILES([ kmess/notification/Makefile ])
m4trace:configure.in:91: -1- AC_CONFIG_FILES([ kmess/pics/Makefile ])
m4trace:configure.in:92: -1- AC_CONFIG_FILES([ kmess/settings/Makefile ])
m4trace:configure.in:93: -1- AC_CONFIG_FILES([ kmess/sounds/Makefile ])
m4trace:configure.in:94: -1- AC_CONFIG_FILES([ po/Makefile ])
m4trace:configure.in:95: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.in:95: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+22
View File
@@ -0,0 +1,22 @@
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 copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+82
View File
@@ -0,0 +1,82 @@
# - Try to find GCrypt
# Once done this will define
#
# GCRYPT_FOUND - system has GCrypt
# GCRYPT_INCLUDE_DIRS - the GCrypt include directory
# GCRYPT_LIBRARIES - Link these to use GCrypt
# GCRYPT_DEFINITIONS - Compiler switches required for using GCrypt
#
# Copyright (c) 2009 Andreas Schneider <mail@cynapses.org>
#
# Redistribution and use is allowed according to the terms of the New
# BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
# Imported into KMess, monday october 19, 2009 by Sjors
# reference URL:
# http://dev.libssh.org/export/27d25752e93c19d3e6584915bd64b72e43f3afc0/ \
# cmake/Modules/FindGCrypt.cmake
#
if (GCRYPT_LIBRARIES AND GCRYPT_INCLUDE_DIRS)
# in cache already
set(GCRYPT_FOUND TRUE)
else (GCRYPT_LIBRARIES AND GCRYPT_INCLUDE_DIRS)
find_path(GCRYPT_INCLUDE_DIR
NAMES
gcrypt.h
PATHS
/usr/include
/usr/local/include
/opt/local/include
/sw/include
)
mark_as_advanced(GCRYPT_INCLUDE_DIR)
find_library(GCRYPT_LIBRARY
NAMES
gcrypt
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
)
mark_as_advanced(GCRYPT_LIBRARY)
if (GCRYPT_LIBRARY)
set(GCRYPT_FOUND TRUE CACHE INTERNAL "Wether the gcrypt library has been found" FORCE)
endif (GCRYPT_LIBRARY)
set(GCRYPT_INCLUDE_DIRS
${GCRYPT_INCLUDE_DIR}
)
if (GCRYPT_FOUND)
set(GCRYPT_LIBRARIES
${GCRYPT_LIBRARIES}
${GCRYPT_LIBRARY}
)
endif (GCRYPT_FOUND)
if (GCRYPT_INCLUDE_DIRS AND GCRYPT_LIBRARIES)
set(GCRYPT_FOUND TRUE)
endif (GCRYPT_INCLUDE_DIRS AND GCRYPT_LIBRARIES)
if (GCRYPT_FOUND)
if (NOT GCrypt_FIND_QUIETLY)
message(STATUS "Found GCrypt: ${GCRYPT_LIBRARIES}")
endif (NOT GCrypt_FIND_QUIETLY)
else (GCRYPT_FOUND)
if (GCrypt_FIND_REQUIRED)
message(FATAL_ERROR "Could not find GCrypt")
endif (GCrypt_FIND_REQUIRED)
endif (GCRYPT_FOUND)
# show the GCRYPT_INCLUDE_DIRS and GCRYPT_LIBRARIES variables only in the advanced view
mark_as_advanced(GCRYPT_INCLUDE_DIRS GCRYPT_LIBRARIES)
endif (GCRYPT_LIBRARIES AND GCRYPT_INCLUDE_DIRS)
+9
View File
@@ -0,0 +1,9 @@
#!/bin/sh
QCATOOL_EXEC=$(which qcatool2 2>/dev/null)
if [ ! -x "$QCATOOL_EXEC" ]; then
echo 0
exit
fi
qcatool2 plugins | grep -q qca-ossl && echo 1 || echo 0
+30
View File
@@ -0,0 +1,30 @@
/**
* KMess configuration file
*
* The value for these defines is controlled by CMake at configuration time.
* NOTE: This file needs to be written in C, as it will be included by C source files too.
*/
/* Define the application version */
#define KMESS_VERSION "${KMESS_VERSION}"
/* Define if debug output should be enabled */
#define KMESS_DEBUG ${KMESS_ENABLE_DEBUG_OUTPUT}
/* Define what the build type of KMess is */
#cmakedefine KMESS_BUILT_DEBUGFULL ${KMESS_BUILD_DEBUGFULL}
/* Define the fallback prefix */
#define KMESS_PREFIX "${CMAKE_INSTALL_PREFIX}"
/* Define if you have the XScreenSaver extension */
#cmakedefine HAVE_XSCREENSAVER ${HAVE_XSCREENSAVER}
/* Define if LikeBack is not needed */
#define KMESS_DISABLE_LIKEBACK ${KMESS_DISABLE_LIKEBACK}
/* Define whether Ink support is enabled */
#define KMESS_ENABLE_INK ${HAVE_LIBISFQT}
/* Define whether we have the new system tray */
#cmakedefine HAVE_NEW_TRAY
+36
View File
@@ -0,0 +1,36 @@
#!/bin/sh
cd `dirname $0`/..
# second sed expression fixes Mac OS X 10.4
appver="`egrep 'SET.*KMESS_VERSION' CMakeLists.txt | sed -e 's/.*"\([^"]*\)".*/\1/'`"
date="`date +%Y%m%d`"
# Make sure we have the right repository
if [ ! -f kmess.kdev4 ]; then
/bin/echo -n "git (unknown)"
exit
fi
# Display normal version if git is not installed
if [ ! -x `which git 2>/dev/null` ]; then
/bin/echo -n "$appver"
exit
fi
# Display subversion version if this is a working copy
gitname=`LANG=C git describe --all HEAD 2>/dev/null | sed -e 's:^heads/::g'`
gitver=`LANG=C git rev-parse --short HEAD 2>/dev/null`
# see if this is not a repository.
if [ -z "$gitver" ]; then
if [ -z "$KMESS_VER" ]; then
/bin/echo -n "$appver";
else
/bin/echo -n "$KMESS_VER";
fi
exit;
fi
# display subversion version and date
/bin/echo -n "$appver-git ($gitname@$gitver >= $date)"
+24
View File
@@ -0,0 +1,24 @@
# This file is included here because the standard FindGIF.cmake file
# requires the CHECK_STRUCT_MEMBER macro. It wasn't on my PC, at least, so
# I include a copy of the macro here for giflib to use.
MACRO (CHECK_STRUCT_MEMBER _STRUCT _MEMBER _HEADER _RESULT)
SET(_INCLUDE_FILES)
FOREACH (it ${_HEADER})
SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n")
ENDFOREACH (it)
SET(_CHECK_STRUCT_MEMBER_SOURCE_CODE "
${_INCLUDE_FILES}
int main()
{
${_STRUCT}* tmp;
tmp->${_MEMBER};
return 0;
}
")
CHECK_CXX_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT})
ENDMACRO (CHECK_STRUCT_MEMBER)
-110
View File
@@ -1,110 +0,0 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* Define if you have the CoreAudio API */
#undef HAVE_COREAUDIO
/* Define to 1 if you have the <crt_externs.h> header file. */
#undef HAVE_CRT_EXTERNS_H
/* Defines if your system has the crypt function */
#undef HAVE_CRYPT
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define if you have libjpeg */
#undef HAVE_LIBJPEG
/* Define if you have libpng */
#undef HAVE_LIBPNG
/* Define if you have a working libpthread (will enable threaded code) */
#undef HAVE_LIBPTHREAD
/* Define if you have libz */
#undef HAVE_LIBZ
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define if your system needs _NSGetEnviron to set up the environment */
#undef HAVE_NSGETENVIRON
/* Define to 1 if you have the <pthread/linuxthreads/pthread.h> header file.
*/
#undef HAVE_PTHREAD_LINUXTHREADS_PTHREAD_H
/* Define if you have the res_init function */
#undef HAVE_RES_INIT
/* 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 <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 <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* C++ compiler supports template repository */
#undef HAVE_TEMPLATE_REPOSITORY
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if you want Xinerama support */
#undef HAVE_XINERAMA
/* 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 version of this package. */
#undef PACKAGE_VERSION
/* The size of a `char', as computed by sizeof. */
#undef SIZEOF_CHAR
/* The size of a `char *', as computed by sizeof. */
#undef SIZEOF_CHAR_P
/* The size of a `int', as computed by sizeof. */
#undef SIZEOF_INT
/* The size of a `long', as computed by sizeof. */
#undef SIZEOF_LONG
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION
/* Compatibility define */
#undef ksize_t
/* Define the real type of socklen_t */
#undef socklen_t
Vendored Executable → Regular
+223 -25311
View File
File diff suppressed because it is too large Load Diff
-3
View File
@@ -1,3 +0,0 @@
./admin/configure.in.min
configure.in.in
./kmess-0.10.1/configure.in.in
-95
View File
@@ -1,95 +0,0 @@
dnl This file is part of the KDE libraries/packages
dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
dnl This file is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Library General Public
dnl License as published by the Free Software Foundation; either
dnl version 2 of the License, or (at your option) any later version.
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Library General Public License for more details.
dnl You should have received a copy of the GNU Library General Public License
dnl along with this library; see the file COPYING.LIB. If not, write to
dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
dnl Boston, MA 02111-1307, USA.
# Original Author was Kalle@kde.org
# I lifted it in some mater. (Stephan Kulow)
# I used much code from Janos Farkas
dnl Process this file with autoconf to produce a configure script.
AC_INIT(acinclude.m4) dnl a source file from your sub dir
dnl This is so we can use kde-common
AC_CONFIG_AUX_DIR(admin)
dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
unset CDPATH
dnl Checking host/target/build systems, for make, install etc.
AC_CANONICAL_SYSTEM
dnl Perform program name transformation
AC_ARG_PROGRAM
dnl Automake doc recommends to do this only here. (Janos)
AM_INIT_AUTOMAKE(kmess, 0.10.1) dnl searches for some needed programs
KDE_SET_PREFIX
dnl generate the config header
AM_CONFIG_HEADER(config.h) dnl at the distribution this done
dnl Checks for programs.
AC_CHECK_COMPILERS
AC_ENABLE_SHARED(yes)
AC_ENABLE_STATIC(no)
KDE_PROG_LIBTOOL
dnl for NLS support. Call them in this order!
dnl WITH_NLS is for the po files
AM_KDE_WITH_NLS
KDE_USE_QT(3)
AC_PATH_KDE
#MIN_CONFIG(3)
dnl PACKAGE set before
dnl CXXFLAGS="$NOOPT_CXXFLAGS" dnl __kdevelop[noopt]__
dnl CFLAGS="$NOOPT_CFLAGS" dnl __kdevelop[noopt]__
dnl CXXFLAGS="$CXXFLAGS $USE_EXCEPTIONS" dnl __kdevelop[exc]__
dnl KDE_NEED_FLEX dnl __kdevelop__
dnl AC_PROG_YACC dnl __kdevelop__
#MIN_CONFIG(3)
dnl PACKAGE set before
dnl CXXFLAGS="$NOOPT_CXXFLAGS" dnl __kdevelop[noopt]__
dnl CFLAGS="$NOOPT_CFLAGS" dnl __kdevelop[noopt]__
dnl CXXFLAGS="$CXXFLAGS $USE_EXCEPTIONS" dnl __kdevelop[exc]__
dnl KDE_NEED_FLEX dnl __kdevelop__
dnl AC_PROG_YACC dnl __kdevelop__
KDE_CREATE_SUBDIRSLIST
AC_CONFIG_FILES([ Makefile ])
AC_CONFIG_FILES([ doc/Makefile ])
AC_CONFIG_FILES([ doc/en/Makefile ])
AC_CONFIG_FILES([ kmess/Makefile ])
AC_CONFIG_FILES([ kmess/actions/Makefile ])
AC_CONFIG_FILES([ kmess/chat/Makefile ])
AC_CONFIG_FILES([ kmess/contact/Makefile ])
AC_CONFIG_FILES([ kmess/dialogs/Makefile ])
AC_CONFIG_FILES([ kmess/network/Makefile ])
AC_CONFIG_FILES([ kmess/notification/Makefile ])
AC_CONFIG_FILES([ kmess/pics/Makefile ])
AC_CONFIG_FILES([ kmess/settings/Makefile ])
AC_CONFIG_FILES([ kmess/sounds/Makefile ])
AC_CONFIG_FILES([ po/Makefile ])
AC_OUTPUT
-11
View File
@@ -1,11 +0,0 @@
#MIN_CONFIG(3)
AM_INIT_AUTOMAKE(kmess,0.10.1)
dnl CXXFLAGS="$NOOPT_CXXFLAGS" dnl __kdevelop[noopt]__
dnl CFLAGS="$NOOPT_CFLAGS" dnl __kdevelop[noopt]__
dnl CXXFLAGS="$CXXFLAGS $USE_EXCEPTIONS" dnl __kdevelop[exc]__
dnl KDE_NEED_FLEX dnl __kdevelop__
dnl AC_PROG_YACC dnl __kdevelop__
+6
View File
@@ -0,0 +1,6 @@
# Build files and dirs
build*
# KDevelop and other IDE-specific project files
*.kdev*
+25
View File
@@ -0,0 +1,25 @@
LibISF-Qt authors
-------------------------
The developers of this library are:
- Valerio Pilo <valerio@kmess.org>
- Adam Goossens <adam@kmess.org>
Credits
-------------------------
Creating this library would not have been possible without the previous efforts
of some great people:
The tclISF authors:
- Ole André Vadla Ravnås (oleavr)
- Youness Alaoui (KaKaRoTo)
- Boris Faure (billiob)
The pyISF author:
- Kevin Campbell
We'd also like to thank Microsoft for publishing the file format specifications.
+131
View File
@@ -0,0 +1,131 @@
CMAKE_MINIMUM_REQUIRED( VERSION 3.16 )
PROJECT( isf-qt LANGUAGES CXX )
#### Main switches ####
# Bundled mode: you can add Isf-Qt as a subdirectory
# of your CMake-based prjoect easily. Just use:
# SET( USE_BUNDLED_LIBRARIES ISFQT )
# and Isf-Qt will be built and statically linked in your
# application, without installing anything
IF( ISFQT_IS_BUNDLED OR USE_BUNDLED_LIBRARIES MATCHES "ISFQT" )
SET( ISFQT_IS_BUNDLED TRUE )
MESSAGE( "-- Will build Isf-Qt in bundled mode." )
ELSE()
SET( ISFQT_IS_BUNDLED FALSE )
ENDIF()
# Only set the build type if we're not being bundled: if we are, we'll
# use the build type specified by the parent project
IF( NOT ISFQT_IS_BUNDLED )
# Define the default build type
# Possible values:
# - none
# - release
# - debug
# - debugfull (even fewer optimisations)
# - relwithdebinfo (release with debug info)
# - minsizerel (minimum size release)
# Uncomment the next line to force building in full debug mode
SET( CMAKE_BUILD_TYPE debugfull )
ENDIF()
# Define the library version number
SET( ISFQT_VERSION "1.0dev" )
#### Inclusions ####
FIND_PACKAGE( Qt6 REQUIRED COMPONENTS Core Core5Compat Gui Widgets )
OPTION( WANT_GIF "Enable support for reading and writing Fortified-GIF images" ON )
IF( WANT_GIF )
MESSAGE( "-- Looking for GifLib" )
# Apparently, the KDE CMake macros unset a check which is required by giflib.
IF( KDE4_FOUND )
INCLUDE( "cmake/giflib_hack.cmake" )
ENDIF( KDE4_FOUND )
FIND_PACKAGE( GIF QUIET )
# At this point, we can be relatively sure that if it's there, it has been found
IF( NOT GIF_FOUND )
MESSAGE( "-- Looking for GifLib - not found!" )
MESSAGE( FATAL_ERROR
"Support to read and write Fortified-GIF images is missing.\n"
" * You will need to install both the library and development packages of the GIF Library, giflib.\n"
" * Usually the package names for this library are:\n"
" on Ubuntu: 'libgif4' and 'libgif-dev'\n"
" on openSUSE: 'giflib' and 'giflib-devel'\n"
" * The project homepage is http://sourceforge.net/projects/giflib/\n" )
ELSE()
MESSAGE( "-- Looking for GifLib - found" )
ENDIF()
ELSE( WANT_GIF )
MESSAGE( "-- GifLib support disabled" )
ENDIF( WANT_GIF )
# Set the variable for isfqtconfig.h.in
IF( WANT_GIF )
SET( GIF_ENABLED 1 )
ELSE()
SET( GIF_ENABLED 0 )
ENDIF()
#### Compilation ####
IF( CMAKE_COMPILER_IS_GNUCXX )
SET( CMAKE_CXX_FLAGS_DEBUGFULL
"-O0 -g3 -fno-inline -Wall -Woverloaded-virtual -Wsign-compare -Wundef -fvisibility=default" )
ENDIF( CMAKE_COMPILER_IS_GNUCXX )
IF( NOT ISFQT_DEBUG_OUTPUT STREQUAL "1" AND NOT ISFQT_DEBUG_OUTPUT STREQUAL "0" )
IF( CMAKE_BUILD_TYPE MATCHES debug )
SET( ISFQT_DEBUG_OUTPUT 1 )
ELSE()
SET( ISFQT_DEBUG_OUTPUT 0 )
ENDIF()
ENDIF()
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} src include )
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/isfqtconfig.h.in
${CMAKE_CURRENT_BINARY_DIR}/isfqtconfig.h )
ADD_SUBDIRECTORY( src )
IF( NOT ISFQT_IS_BUNDLED )
ENABLE_TESTING()
ADD_SUBDIRECTORY( tests )
ENDIF()
#### Project CMake configuration files creation ####
# Define the shortcuts for the installation directories
SET( INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/isf-qt"
CACHE STRING "Directory where the include files will be installed" )
SET( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib"
CACHE STRING "Directory where the lib will be installed" )
SET( SHARED_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share"
CACHE STRING "Directory where the shared data will be installed" )
# Prepare thej IsfQtConfig.cmake file, which allows other projects to find us
CONFIGURE_FILE( cmake/IsfQtConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/IsfQtConfig.cmake" @ONLY )
#### Installation ####
# Do not install the resources if we're bundling it into an application
IF( NOT ISFQT_IS_BUNDLED )
INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/IsfQtConfig.cmake
DESTINATION ${LIB_INSTALL_DIR}/isfqt )
INSTALL( FILES cmake/FindIsfQt.cmake
DESTINATION ${CMAKE_ROOT}/Modules )
ENDIF()
+504
View File
@@ -0,0 +1,504 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
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 Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
+165
View File
@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
+307
View File
@@ -0,0 +1,307 @@
2010-07-23 (Valerio)
* Fixed the copy constructor in Stroke, it was not copying all the necessary properties.
* Fixed some compiler warnings.
* Improved bundled compilation mode.
2010-07-22 (Valerio)
* Improved the InkEdit text - added a checkbox to show the usage of Canvas::isEmpty() and a label
to show usage of the Canvas::inkChanged() signal.
* Fixed inkChanged() signal emission in Canvas: it was emitted too early, when the drawing was not
updated yet: slots connected to inkChanged() could then call isEmpty() and get a true return value,
even if the drawing wasn't empty.
2010-06-27 (Adam)
* Use Q_ASSERT_X instead of qWarning where appropriate.
2010-06-19 (Valerio)
* Changed the default behavior of InkCanvas::pixmap(), now paints on a transparent
background, instead of a white one.
2010-06-19 (Valerio)
* Added support for PNG fortification. Like GIF fortification, this feature allows to
write a PNG containing the full ISF drawing inside itself. Of course, it's now also
possible to read a PNG containing ISF data and retrieve the actual drawing.
2010-03-20 (Adam)
* Slight optimisation to painting - we no longer draw the background color, Qt does it for us.
Also, only render the parts of the buffer that have changed.
2010-03-13 (Adam)
* Add a bezier curve smoothing algorithm. Strokes with the FitToCurve flag set are
rendered with an approximate bezier curve. Gives much smoother looking strokes.
2010-02-21 (Adam)
* Optimise the painting of strokes. Cache logic added to IsfQtDrawing and only
strokes that have been added are painted. Also, no longer do a full bounding rect
recalculation when a stroke is added.
2009-10-03 (Adam)
* Remove unused HIMETRIC conversion methods.
2009-09-11 (Adam)
* Improve doxygen comments of InkCanvas.
2009-09-10 (Valerio)
* Do not add twice single-dot strokes in InkCanvas.
* Removed a leftover debug message.
* Fixed the Drawing copy constructor, which was copying even empty lists.
* Fixed Bit Packing compression and the Delta-Delta transform, now the lib
works perfectly again.
* Fixed argument parsing in test_decode.
2009-09-10 (Adam)
* Don't extract private members in Doxygen output.
2009-09-09 (Valerio)
* Added Fortified GIF read-write support. New optional dependency, giflib.
* Added Base64-encoded input/output data support.
* Updated the documentation files.
* Added Doxygen documentation infrastructure. There still are a lot of errors.
* Created proper Doxygen documentation for all classes.
* Moved the resource files into the /data/ directory.
* Added a proper copy constructor for Drawing.
2009-09-09 (Adam)
* Add draw-eraser.svgz to comply with Oxygen licensing requirements.
2009-09-08 (Adam)
* Make copyright headers standard across all files.
* Replace the eraser cursor with draw-eraser.png take from Oxygen 16x16 icon set.
2009-08-30 (Valerio)
* Rewritten the algorithm detection methods.
* Changed the names of some internal data classes, and improved their namespaces.
* Added a maximum drawing size check, to avoid errors from resulting in 80k by 70k pixel wide
drawings.
* Moved all algorithms into src/data/algorithms.
* Renamed the Gorilla algorithm to "Bit Packing".
* Separated the delta-delta transformation methods into their own files.
* Added an algorithm to do bit-packing of bytes.
* Fixed bug in DataSource, the last bit of data was never read.
* Added parsing the GUID table tag and saving the GUIDs into Drawing.
* Added parsing of custom tags and decoding their contents.
2009-08-29 (Valerio)
* Fixed skipping unknown custom tags contents.
* Changed more method names to adhere to Qt's method naming style.
2009-08-29 (Adam)
* Start qt-ifying the function names ie, "penSize()" instead of "getPenSize()".
* Add methods to return pen size, colour and brush type from InkCanvas.
* Always write at least one transformation to the stream: if no custom transforms, write the default one.
* No longer take ownership of Isf::Drawing instances set with setDrawing().
* By default InkCanvas' initial Isf::Drawing instance that is created is no longer allocated
with new. This frees us from the concern of "when do we delete this initial reference?".
* Rename Isf::InkEdit to Isf::InkCanvas. A better suited name.
* When building bundled isf-qt, link statically and do not install any library components.
Non-bundled builds a shared library and installs all components.
2009-08-28 (Adam)
* Fix writing of transformation data: write in the correct order and scale the transform values
appropriately before writing.
* Write TIDX properly when transformations change between strokes.
* Properly apply scaling when calculating the bounding rectangle.
* Do not use Compress.decode(*) calls as function parameters. The order of parameter
evaluation is platform-dependent and hence cannot be relied on.
* Properly apply stroke transforms when drawing; scale pen size appropriately.
2009-08-24 (Adam)
* Fix Drawing::getStrokeAtPoint to properly return point strokes.
* Prevent strokes from having a bounding rectangle of size 1x1 (otherwise the eraser never hit them)
* Tweak the collision distance to give a 25% margin of error (in practice this works well).
2009-08-23 (Adam)
* Add Drawing::getStrokeAtPoint method. Uses Heron's Formula and triangle heights to determine
if the cursor is positioned above a stroke. Seems to work quite well and appears to be fast.
* Basic eraser support working. Individual strokes can be erased.
* InkEdit now shows a custom cursor - a point drawn with the current stroke colour and width.
* Drawing now calculates its bounding rectangle as necessary. Calls to finalizeChanges are not
necessary anymore.
* Remove cropping. Found a better method whereby InkEdit will draw the rendered ISF using the
offset provided by the bounding rectangle of Isf::Drawing.
* Supply the FitToCurve flag for all strokes. Windows will render them using Bezier smoothing, making
them appear nicer.
* Upgrade the TestInkEdit application. Supports multiple stroke colours and pen widths.
* Remove InkEdit::getImageBytes and replace with InkEdit::getBytes. InkEdit doesn't write to GIF.
* Support changing the colour of the InkEdit canvas.
* Add a convenience method, InkEdit::save(), that will write the ISF drawing to a given QIODevice.
Optionally will write the drawing in base64.
2009-08-23 (Adam)
* Bug fixes in isf-qt: properly assign stroke attributes when changing colour on InkEdit.
* Fix a crash that would occur if stroke attributes or transform were null.
* Initial version of isf-qt InkEdit committed. Works reasonably well. Not integrated in KMess yet.
* Added a cropping property to Isf::Drawing. When true, Drawing::getImage returns a cropped image
and getSize returns the cropped size. When false, does the opposite. Necessary for InkEdit to
properly support adding strokes to loaded Ink data.
* Add a test application for new InkEdit. Can create, save and load Ink data in both raw ISF and
ISF-base64 format.
* Fix a bug in tagswriter which cause corrupt ISF data if there were no metric blocks.
2009-08-20 (Valerio)
* Implemented writing metric blocks into ISF streams.
* Fixed transformation/attributeSet/metrics index writing, now the index tags are written only
when necessary.
* Removed all user-side required conversions between HiMetric units and pixels. The library
now only offers data expressed in pixels.
* Fixed a bug in writeHiMetricSize() which prevented ISF streams from being parsed by older
Microsoft.Ink libraries, like the one of Windows Messenger.
2009-08-20 (Adam)
* Fix install path of FindIsfQt.cmake.
* Don't attempt to install FindIsfQt.cmake if the library is build bundled.
2009-08-19 (Valerio)
* Added DataSource::reset() method to start reading data back from the start.
* Added to DataSource some ways to detect errors.
* Rewritten the multi-byte encoding tests.
* Switched away from QTransform to QMatrix for transformations.
* Fixed the write order of transformation values.
* Fixed stroke saving. The library should now be able to generate new ink.
* Renamed Isf::Parser::isfToDrawing() and Isf::Parser::drawingToIsf()
to Isf::Stream::reader() and Isf::Stream::writer() to enhance readability.
* Renamed the Isf::PointInfo structure to Isf::AttributeSet, because the old name made no sense.
* Added manipulation methods for strokes, transformations and attribute sets.
* Fixed compiler warning. Thanks to Émeric Dupont.
* Fixed colors in written streams.
* Fixed the Scale&Translate transformation once again.
* Isf::Drawings are now created on the heap instead of on the stack, to avoid unwanted object
deletions.
* Added optional parameter to Isf::Drawing::getPixmap() to choose the background color of
the created image.
* Added a method to compute some useful values before rendering new and changed drawings.
* Added a couple stream writer improvements.
2009-08-14 (Valerio)
* Added Drawing::clean() method to reset a drawing without creating a new one.
2009-08-13 (Valerio)
* Added DataSource method to append bit arrays to the data.
* Implemented Huffman encoding. Still missing is the algo to select the best encoding index.
2009-08-07 (Valerio)
* Added an AUTHORS file with credits.
* Implemented Gorilla compression.
* Added stroke writing in the stream writer.
* Moved all of Drawing's object lists to pointer lists, to ease comparing their items.
2009-08-06 (Valerio)
* Added Metrics recognization and saving.
* Made sense into the property tags: they're now all in the PacketProperty enum.
* Added MultiByteCoding utility methods to find out the encoded size of a value.
* Changed the installed include files directory to PREFIX/include/isf-qt .
* Added a NOTES file with possibly useful stuff.
* Added metrics measurement units, found on MSDN.
* Added a couple more checks on data.
* Moved include isfdrawing.h to isfqtdrawing.h .
* Fixed CMake installing bug and added C++ style includes, <IsfQt> and <IsfQtDrawing>.
* Fixed name of the drawing-to-isf converting method.
* Fixed crash when given an invalid drawing address.
2009-08-05 (Valerio)
* Extended Adam's last fix to the other main drawing properties.
* Added maximum stroke pen size value.
* Added stroke and drawing bounding box values.
* Added adjusting the drawing's bounding box to include thick strokes.
* Enabled transformations.
* Fixed transform data order, it was inverted for scale+translate transforms.
* Fixed destination QPixmap's size, it's now fit for the drawing.
* Completed CMake rules, now the library can be installed on the system and
other projects can find it.
* Improved debugging rules, now debug mode is controlled (again) from CMake
and verbose output is configurable.
* Fixed the documentation to reflect the name change "libisf" to "isf-qt",
and updated it.
* Added updated KDevelop3/4 project files.
* Changed the library structure:
- separated the public interface includes into the /include/ dir
- moved all internally used inclusions and data structures into
/src/isfqt-internal.h
- reorganized the internal files structure
- renamed class Tags to TagsParser as there will be a TagWriter (made up name)
- Renamed the IsfData class to DataSource as it is at a lower level than ISF.
- Moved the ISF parser into a class Parser, found in include/isfqt.h and src/isfqt.cpp
* Added a dummy drawing-to-ISF method in class Parser.
* Added multibyte encoding methods taking a DataSource.
* Added float encoding method and fixed uint encoding method.
* Fixed seeking bug in DataSource::append() methods.
* Added DataSource::prepend() methods.
* Started working on the ISF stream writer.
2009-08-05 (Adam)
* Correct an issue with incorrect colours for strokes.
2009-08-04 (Adam)
* Re-save test ISF data with official Microsoft Ink classes.
* Add functions to convert between HiMetric units and pixels.
* Antialiasing whilst drawing ISF to QPixmap.
* Fix the drawing of ISF data to QPixmap: draw the lines correctly between points.
2009-08-04 (Valerio)
* Fixed endianness problems when retrieving datastream bits with IsfData.
* Added a new parameter to IsfData::atEnd() to check if the buffer was all used,
including the current byte's bits.
* Changed IsfData::seekByteBack() with seekRelative(), which makes more sense.
* Added IsfData::skipToNextByte() to discard the current byte's bits and move on
to the next byte.
* Added Isf::Drawing method getPixmap() to convert a drawing to a QPixmap. Quite raw
at the moment, but still.
* Moved actual tag parsing into Isf::Drawing::parseTag().
* Added a whole lot of tags to Isf::Tags. Now the parser is able to recognize the most
useful tags (and mostly make use of their data).
* Added a GUID mapping from the ISF specs, I doubt it'll ever be used though.
* Added float decoding method to multibytecoding.cpp.
* Added new test ISF files - more complex - and sorted all test ISF files by complexity.
* Added new test application "test_decode", which displays a parsed ISF file.
* Added pressure data recognization.
* Added stroke description blocks recognization.
* Fixed stroke payload parsing appearing when not needed (and wasting bytes).
* Added a set of data structures to hold metrics and to better contain stroke attributes.
* Reorganized the code of the Tags namespace, it's now a class with all static members;
this simplifies quite a bit the passing of data between that and IsfDrawing.
* Fixed bug in the GUID Table tag parser.
* Added more compiler flags (and warnings) to ease debugging.
* Added the infrastructure to link metrics and transforms data to the strokes.
* Finally linked the drawing attributes and stroke info to the strokes' data:
libisf-qt is now correctly decoding all tests (except test 6).
* Fixed all compiler warnings and improved the debugging output.
* Fixed point rendering didn't work when points are made by a line from a point
to the same point.
* Fixed broken main parser loop, continued forever.
2009-07-30 (Valerio)
* Added IsfData class to read and write bit-by-bit an array of bytes.
* Changed all the code to use it instead of plain QByteArrays.
* Completed huffman decompression support.
* Added algorithm data to help writing gorilla decompression.
* Added tests for the IsfData class.
* Added tag recognization.
* Fixed some IsfData bugs.
* Changed default CMake build type to debugfull.
* Completed Gorilla decompression support.
* Started tag parsing work, made basic analysis methods.
* Made the ParserError enum (now IsfError) the library's error enumeration system.
* Continued a bit the tag parsing work, added a couple tags and another testfile.
2009-07-08 (Adam)
* Make decode(UInt|Int) take a reference as a position parameter. This
reference is then incremented as the integer is decoded.
* Re-work tests for IsfDrawing.
* Create IsfDrawing::fromIsfData() static method to create a new IsfDrawing
instance from a QByteArray containing ISF data.
* Begin state matchine for ISF parser.
* Add appropriate unit tests for ISF parser.
* Added TODO file for libisf to keep track of things.
2009-06-30 (Adam)
* Parse ISF version number properly; add unit tests for it.
* Fix CMakeLists.txt to build with debug info by default
* Moved format/types.(cpp|h) into the multibytecoding.(cpp|h) classes.
Also moved these into libisf/ and deleted format/ directory.
* Added Isf::encodeInt to encode a signed integer into multibyte format
* Added test cases for the encode/decode functions.
* Re-add libisf.h
* Fix wrong e-mail addresses in copyright info.
* Created a unit test framework for libisf-qt; run using make test
* Created IsfDrawing class which will represent an ISF drawing.
* Added some rudimentary unit tests for IsfDrawing
+259
View File
@@ -0,0 +1,259 @@
# Doxyfile 1.5.5-KDevelop
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = ISF-Qt
PROJECT_NUMBER = 0.9
OUTPUT_DIRECTORY = ./apidocs
CREATE_SUBDIRS = YES
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 2
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
TYPEDEF_HIDES_STRUCT = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = YES
EXTRACT_ANON_NSPACES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = YES
SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = YES
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = NO
SHOW_DIRECTORIES = NO
SHOW_FILES = YES
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = YES
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ./src ./include
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.cpp \
*.h \
*.dox
RECURSIVE = YES
EXCLUDE = *.moc \
*.moc.cpp \
*.moc.h
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = */build*/*
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCES_LINK_SOURCE = YES
USE_HTAGS = NO
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 4
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER = doc/apidocs_header.html
HTML_FOOTER = doc/apidocs_footer.html
HTML_STYLESHEET = doc/doxygen.css
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
HTML_DYNAMIC_SECTIONS = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = YES
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES
TREEVIEW_WIDTH = 250
FORMULA_FONTSIZE = 10
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE = isf-qt.tag
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
DOT_FONTNAME = FreeSans
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = NO
CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = NO
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = YES
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
+163
View File
@@ -0,0 +1,163 @@
This file contains possibly useful stuff.
typedef struct _GUID
{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
const GUID name DECLSPEC_HIDDEN; \
const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
DEFINE_GUID(GUID_LINENUMBER, 0xdbf29f2c, 0x5289, 0x4be8, 0xb3, 0xd8, 0x6e, 0xf6, 0x32, 0x46, 0x25, 0x3e);
DEFINE_GUID(GUID_BOXNUMBER, 0x2c243e3a, 0xf733, 0x4eb6, 0xb1, 0xf8, 0xb5, 0xdc, 0x5c, 0x2c, 0x4c, 0xda);
DEFINE_GUID(GUID_SEGMENTATION, 0xb3c0fe6c, 0xfb51, 0x4164, 0xba, 0x2f, 0x84, 0x4a, 0xf8, 0xf9, 0x83, 0xda);// {CA6F40DC-5292-452a-91FB-2181C0BEC0DE}
DEFINE_GUID(GUID_HOTPOINT, 0xca6f40dc, 0x5292, 0x452a, 0x91, 0xfb, 0x21, 0x81, 0xc0, 0xbe, 0xc0, 0xde);// {BF0EEC4E-4B7D-47a9-8CFA-234DD24BD22A}
DEFINE_GUID(GUID_MAX_STROKE_COUNT, 0xbf0eec4e, 0x4b7d, 0x47a9, 0x8c, 0xfa, 0x23, 0x4d, 0xd2, 0x4b, 0xd2, 0x2a);// {7DFE11A7-FB5D-4958-8765-154ADF0D833F}
DEFINE_GUID(GUID_CONFIDENCELEVEL, 0x7dfe11a7, 0xfb5d, 0x4958, 0x87, 0x65, 0x15, 0x4a, 0xdf, 0xd, 0x83, 0x3f);// {8CC24B27-30A9-4b96-9056-2D3A90DA0727}
DEFINE_GUID(GUID_LINEMETRICS, 0x8cc24b27, 0x30a9, 0x4b96, 0x90, 0x56, 0x2d, 0x3a, 0x90, 0xda, 0x7, 0x27);
DEFINE_GUID(GUID_INRANGE, 0xdc00b1af, 0x7321, 0x4ac1, 0x91, 0x88, 0xe3, 0x20, 0x18, 0xeb, 0xb2, 0x3b);
DEFINE_GUID(GUID_TOUCH, 0x65c98c60, 0xcd80, 0x447d, 0xb1, 0x29, 0x25, 0xf6, 0xe, 0x1d, 0x80, 0x5b);
DEFINE_GUID(GUID_UNTOUCH, 0x378c85bb, 0x7118, 0x491e, 0x85, 0x16, 0xa7, 0x48, 0x2d, 0xb, 0x68, 0x3a);
DEFINE_GUID(GUID_TAP, 0x9eaad4, 0xd133, 0x4ed2, 0xb1, 0x2c, 0x89, 0x1f, 0x8e, 0x82, 0x5e, 0x6a);
DEFINE_GUID(GUID_QUALITY, 0xb7fe8008, 0x2df6, 0x4e1b, 0x8c, 0x43, 0xf5, 0xf1, 0x6, 0x8, 0x93, 0x2d);
DEFINE_GUID(GUID_DATAVALID, 0xaacf46b5, 0xf107, 0x47b0, 0xb5, 0x77, 0xd9, 0x39, 0xc0, 0x53, 0xed, 0x41);
DEFINE_GUID(GUID_TRANSDUCERINDEX, 0xa412b445, 0x7818, 0x4c83, 0x84, 0x55, 0x49, 0x29, 0xc8, 0x70, 0x76, 0x3b);
DEFINE_GUID(GUID_TABLETFUNCTIONKEYS, 0xff3b8afe, 0x5f06, 0x494d, 0xa4, 0xf8, 0xd3, 0xe2, 0x85, 0xf9, 0x76, 0x30);
DEFINE_GUID(GUID_PROGRAMCHANGEKEYS, 0x869c344a, 0x92a1, 0x4b6f, 0xb4, 0xbc, 0x3, 0x96, 0xc6, 0xa9, 0xf6, 0xaf);
DEFINE_GUID(GUID_BATTERYSTRENGTH, 0x4ca0a0dc, 0x3549, 0x43f5, 0xa0, 0x32, 0x99, 0xf4, 0xe3, 0x3d, 0xf4, 0x90);
DEFINE_GUID(GUID_INVERT, 0xc3aa28c8, 0x806b, 0x490c, 0xa8, 0x4a, 0xa7, 0x7a, 0xe7, 0x27, 0xc7, 0x18);
DEFINE_GUID(GUID_BUTTON4,0x844b06d, 0xaa2c, 0x4c66, 0x99, 0x76, 0x88, 0xdd, 0x2a, 0x59, 0xe4, 0xf0);
DEFINE_GUID(GUID_BUTTON5,0x944d1340, 0x2549, 0x4905, 0xbd, 0x54, 0x3e, 0xe3, 0x96, 0x3e, 0xe1, 0x57);
DEFINE_GUID(GUID_BUTTON6,0xff19bd41, 0xa463, 0x4eaa, 0xaf, 0x10, 0xb5, 0x6, 0x48, 0x79, 0xe5, 0x4b);
DEFINE_GUID(GUID_BUTTON7,0xdedaf13c, 0xb7dc, 0x423b, 0xb9, 0x7f, 0xa2, 0xbd, 0x68, 0xa2, 0xfd, 0x3d);
DEFINE_GUID(GUID_BUTTON8,0xa6f70e64, 0x3a67, 0x4552, 0xa0, 0xc4, 0x17, 0x38, 0x4e, 0x49, 0x5a, 0x55);
DEFINE_GUID(GUID_BUTTON9,0xbf55916c, 0xd6e6, 0x4fd3, 0x94, 0x62, 0x55, 0xd6, 0x9d, 0xb, 0xe7, 0x9c);
DEFINE_GUID(GUID_BUTTON10,0x95f1b222, 0x1159, 0x4f9a, 0xb6, 0xe4, 0x6e, 0xde, 0xdf, 0xc7, 0x56, 0x9b);
DEFINE_GUID(GUID_BUTTON11,0xf2dff7da, 0xf458, 0x4b61, 0xa2, 0x15, 0x62, 0xd0, 0x56, 0x48, 0x6, 0x53);
DEFINE_GUID(GUID_BUTTON12,0x6a860858, 0x9b68, 0x4da6, 0xb3, 0x2a, 0x55, 0xe9, 0xe9, 0x75, 0xbe, 0xeb);
DEFINE_GUID(GUID_BUTTON13,0x42ffb4d9, 0x7f95, 0x475e, 0x9c, 0x97, 0x82, 0xa0, 0x2b, 0xdc, 0x7e, 0xb6);
DEFINE_GUID(GUID_BUTTON14,0x215008c8, 0xf09d, 0x48d7, 0x95, 0x2e, 0xc, 0x11, 0x8d, 0x6, 0xe8, 0xca);
DEFINE_GUID(GUID_BUTTON15, 0xd1d1fa37, 0x1ee0, 0x4015, 0x9c, 0x33, 0x12, 0xcc, 0x42, 0x57, 0x60, 0x1);
DEFINE_GUID(GUID_PEN_TIMESTAMP1, 0x413a7d1a, 0xeede, 0x45ce, 0xa4, 0x32, 0x80, 0x88, 0xca, 0x9e, 0x8e, 0x4a);
DEFINE_GUID(GUID_PEN_TIMESTAMP2, 0x876c825, 0xcdc, 0x4395, 0xbf, 0x9b, 0x36, 0x7e, 0x69, 0x8a, 0x75, 0x56);
DEFINE_GUID(GUID_WIDTH, 0xbaabe94d, 0x2712, 0x48f5, 0xbe, 0x9d, 0x8f, 0x8b, 0x5e, 0xa0, 0x71, 0x1a);
DEFINE_GUID(GUID_HEIGHT, 0xe61858d2, 0xe447, 0x4218, 0x9d, 0x3f, 0x18, 0x86, 0x5c, 0x20, 0x3d, 0xf4);
DEFINE_GUID(GUID_FINGERCONTACTCONFIDENCE, 0xe706c804, 0x57f0, 0x4f00, 0x8a, 0x0c, 0x85, 0x3d, 0x57, 0x78, 0x9b, 0xe9);
DEFINE_GUID(GUID_TEMPID, 0x2585b91, 0x49b, 0x4750, 0x96, 0x15, 0xdf, 0x89, 0x48, 0xab, 0x3c, 0x9c);
const GUID FAR KNOWN_GUIDS[38] =
{
{ 0x598a6a8f, 0x52c0, 0x4ba0, { 0x93, 0xaf, 0xaf, 0x35, 0x74, 0x11, 0xa5, 0x61 } },
{ 0xb53f9f75, 0x04e0, 0x4498, { 0xa7, 0xee, 0xc3, 0x0d, 0xbb, 0x5a, 0x90, 0x11 } },
{ 0x735adb30, 0x0ebb, 0x4788, { 0xa0, 0xe4, 0x0f, 0x31, 0x64, 0x90, 0x05, 0x5d } },
{ 0x6e0e07bf, 0xafe7, 0x4cf7, { 0x87, 0xd1, 0xaf, 0x64, 0x46, 0x20, 0x84, 0x18 } },
{ 0x436510c5, 0xfed3, 0x45d1, { 0x8b, 0x76, 0x71, 0xd3, 0xea, 0x7a, 0x82, 0x9d } },
{ 0x78a81b56, 0x0935, 0x4493, { 0xba, 0xae, 0x00, 0x54, 0x1a, 0x8a, 0x16, 0xc4 } },
{ 0x7307502d, 0xf9f4, 0x4e18, { 0xb3, 0xf2, 0x2c, 0xe1, 0xb1, 0xa3, 0x61, 0x0c } },
{ 0x6da4488b, 0x5244, 0x41ec, { 0x90, 0x5b, 0x32, 0xd8, 0x9a, 0xb8, 0x08, 0x09 } },
{ 0x8b7fefc4, 0x96aa, 0x4bfe, { 0xac, 0x26, 0x8a, 0x5f, 0x0b, 0xe0, 0x7b, 0xf5 } },
{ 0xa8d07b3a, 0x8bf0, 0x40b0, { 0x95, 0xa9, 0xb8, 0x0a, 0x6b, 0xb7, 0x87, 0xbf } },
{ 0x0e932389, 0x1d77, 0x43af, { 0xac, 0x00, 0x5b, 0x95, 0x0d, 0x6d, 0x4b, 0x2d } },
{ 0x029123b4, 0x8828, 0x410b, { 0xb2, 0x50, 0xa0, 0x53, 0x65, 0x95, 0xe5, 0xdc } },
{ 0x82dec5c7, 0xf6ba, 0x4906, { 0x89, 0x4f, 0x66, 0xd6, 0x8d, 0xfc, 0x45, 0x6c } },
{ 0x0d324960, 0x13b2, 0x41e4, { 0xac, 0xe6, 0x7a, 0xe9, 0xd4, 0x3d, 0x2d, 0x3b } },
{ 0x7f7e57b7, 0xbe37, 0x4be1, { 0xa3, 0x56, 0x7a, 0x84, 0x16, 0x0e, 0x18, 0x93 } },
{ 0x5d5d5e56, 0x6ba9, 0x4c5b, { 0x9f, 0xb0, 0x85, 0x1c, 0x91, 0x71, 0x4e, 0x56 } },
{ 0x6a849980, 0x7c3a, 0x45b7, { 0xaa, 0x82, 0x90, 0xa2, 0x62, 0x95, 0x0e, 0x89 } },
{ 0x33c1df83, 0xecdb, 0x44f0, { 0xb9, 0x23, 0xdb, 0xd1, 0xa5, 0xb2, 0x13, 0x6e } },
{ 0x5329cda5, 0xfa5b, 0x4ed2, { 0xbb, 0x32, 0x83, 0x46, 0x01, 0x72, 0x44, 0x28 } },
{ 0x002df9af, 0xdd8c, 0x4949, { 0xba, 0x46, 0xd6, 0x5e, 0x10, 0x7d, 0x1a, 0x8a } },
{ 0x9d32b7ca, 0x1213, 0x4f54, { 0xb7, 0xe4, 0xc9, 0x05, 0x0e, 0xe1, 0x7a, 0x38 } },
{ 0xe71caab9, 0x8059, 0x4c0d, { 0xa2, 0xdb, 0x7c, 0x79, 0x54, 0x47, 0x8d, 0x82 } },
{ 0x5c0b730a, 0xf394, 0x4961, { 0xa9, 0x33, 0x37, 0xc4, 0x34, 0xf4, 0xb7, 0xeb } },
{ 0x2812210f, 0x871e, 0x4d91, { 0x86, 0x07, 0x49, 0x32, 0x7d, 0xdf, 0x0a, 0x9f } },
{ 0x8359a0fa, 0x2f44, 0x4de6, { 0x92, 0x81, 0xce, 0x5a, 0x89, 0x9c, 0xf5, 0x8f } },
{ 0x4c4642dd, 0x479e, 0x4c66, { 0xb4, 0x40, 0x1f, 0xcd, 0x83, 0x95, 0x8f, 0x00 } },
{ 0xce2d9a8a, 0xe58e, 0x40ba, { 0x93, 0xfa, 0x18, 0x9b, 0xb3, 0x90, 0x00, 0xae } },
{ 0xc3c7480f, 0x5839, 0x46ef, { 0xa5, 0x66, 0xd8, 0x48, 0x1c, 0x7a, 0xfe, 0xc1 } },
{ 0xea2278af, 0xc59d, 0x4ef4, { 0x98, 0x5b, 0xd4, 0xbe, 0x12, 0xdf, 0x22, 0x34 } },
{ 0xb8630dc9, 0xcc5c, 0x4c33, { 0x8d, 0xad, 0xb4, 0x7f, 0x62, 0x2b, 0x8c, 0x79 } },
{ 0x15e2f8e6, 0x6381, 0x4e8b, { 0xa9, 0x65, 0x01, 0x1f, 0x7d, 0x7f, 0xca, 0x38 } },
{ 0x7066fbe4, 0x473e, 0x4675, { 0x9c, 0x25, 0x00, 0x26, 0x82, 0x9b, 0x40, 0x1f } },
{ 0xbbc85b9a, 0xade6, 0x4093, { 0xb3, 0xbb, 0x64, 0x1f, 0xa1, 0xd3, 0x7a, 0x1a } },
{ 0x039143d3, 0x78cb, 0x449c, { 0xa8, 0xe7, 0x67, 0xd1, 0x88, 0x64, 0xc3, 0x32 } },
{ 0x67743782, 0x0ee5, 0x419a, { 0xa1, 0x2b, 0x27, 0x3a, 0x9e, 0xc0, 0x8f, 0x3d } },
{ 0xf0720328, 0x663b, 0x418f, { 0x85, 0xa6, 0x95, 0x31, 0xae, 0x3e, 0xcd, 0xfa } },
{ 0xa1718cdd, 0x0dac, 0x4095, { 0xa1, 0x81, 0x7b, 0x59, 0xcb, 0x10, 0x6b, 0xfb } },
{ 0x810a74d2, 0x6ee2, 0x4e39, { 0x82, 0x5e, 0x6d, 0xef, 0x82, 0x6a, 0xff, 0xc5 } },
};
** InkDrawingAttributes **
DISPID_DAHeight = 1
DISPID_DAColor
DISPID_DAWidth
DISPID_DAFitToCurve
DISPID_DAIgnorePressure
DISPID_DAAntiAliased
DISPID_DATransparency
DISPID_DARasterOperation
DISPID_DAPenTip
DISPID_DAClone
DISPID_DAExtendedProperties
DISPID_DAFitToCurve
DISPID_DAIgnorePressure
DISPID_DAAntiAliased
DISPID_DARasterOperation
DISPID_DAPenTip
DISPID_DAClone
DISPID_DAExtendedProperties
** InkBoundingBoxMode **
IBBM_Default = 0,
IBBM_NoCurveFit,
IBBM_CurveFit,
IBBM_PointsOnly,
IBBM_Union
** InkRasterOperation **
IRO_Black = 1,
IRO_NotMergePen = 2,
IRO_MaskNotPen = 3,
IRO_NotCopyPen = 4,
IRO_MaskPenNot = 5,
IRO_Not = 6,
IRO_XOrPen = 7,
IRO_NotMaskPen = 8,
IRO_MaskPen = 9,
IRO_NotXOrPen = 10,
IRO_NoOperation = 11,
IRO_MergeNotPen = 12,
IRO_CopyPen = 13,
IRO_MergePenNot = 14,
IRO_MergePen = 15,
IRO_White = 16
If we scale the Ink Space Rect (canvas_) to or from HiMetric and using the metrics,
do we get anything useful?
- Valerio
To save received ISF from Messenger, put this code in src/chat/chatmaster.cpp at line 1324, below "case FORMAT_ISF:" but above the "break;":
---
QFile file( "~/output.isf" );
file.open( QIODevice::WriteOnly );
file.write( QByteArray::fromBase64( inkEncodedData ) );
file.close();
---
You probably have to change the file path :P
- Valerio
+101
View File
@@ -0,0 +1,101 @@
About LibISF-Qt:
============
LibISF-Qt is a Qt4 library made to encode and decode Microsoft's
Ink Serialized Format (ISF) files.
Q. What is ISF?
A. Ink Serialized Format is an open specification initially
made by Microsoft, and then freed up with their "Open
Specification Promise" initiative. ISF is a file format
made to store handwriting very efficiently: an ISF file
with a somewhat complex handwritten drawing takes less than
1000 bytes. ISF supports metrics to adapt drawings to
different form factors, bezier smoothing of drawn strokes,
coloring, stroke size varying by pen pressure, linking
in static data, and more.
Q. How does this library differ from aMSN's or Emesene's?
A. It's written with Qt, which makes it easily portable on
a lot of different architectures; also Qt's new licensing
terms (LGPL) make it possible for everyone to use it
easily.
The library supports more ISF features than those two,
since we've written it using the official specification.
Moreover, aMSN's and Emesene's are not distributed by
theirselves, ours is.
Q. What's the status of completion of the library, and which
ISF features does/will support?
A. Please see the TODO file to have an overview.
Compiling and installing:
=================
LibISF-Qt uses CMake, a quick and clean alternative to Autotools.
First create a new directory within the one which contains this
file (we'll have the library built there):
$ mkdir build
Enter it and run CMake:
$ cd build
$ cmake -D CMAKE_INSTALL_PREFIX=/usr ..
Then, if everything went smoothly, build the library itself:
$ make
If everything went right again, install it:
$ make install
Aaand now you're set. :)
LibISF-Qt natively supports being bundled into other applications.
Bundling means that the library does not get installed system-wide
along with your application, but instead it gets statically linked
into the application.
The idea is that you copy the Isf-Qt source tree (with an SVN export
or a Git submodule) into your project's tree, and then set up your
CMake listfile to add this library as a subdirectory:
> SET( ISFQT_IS_BUNDLED TRUE )
> ADD_SUBDIRECTORY( contrib/isf-qt )
And again, you're done!
Documentation:
=================
The ISF format is (albeit poorly*) documented: here's the
sources we used.
- Original Microsoft ISF specification, made open with their
Open Specification Promise:
http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/InkSerializedFormat(ISF)Specification.pdf
- Quick explanation of the algorithms and other very useful
details:
http://synce.org/moin/FormatDocumentation/InkSerializedFormat
- Original code from aMSN:
https://amsn.svn.sourceforge.net/svnroot/amsn/trunk/amsn/utils/tclISF/src
- Original code from emesene:
https://emesene.svn.sourceforge.net/svnroot/emesene/trunk/emesene/pyisf
* = The specification was probably not meant for use by
developers wanting to write an alternative implementation;
there's a lot of guesswork to be done.
Licensing
=========
Only the Oxygen icon, draw-eraser, is released under LGPL 3.0 (see http://www.oxygen-icons.org/). See COPYING_ICONS for full license text.
The remainder of ISF-qt is released under LGPL2.1. See COPYING for full license text.
More Information
================
For more information about LibISF-Qt, ask us:
- forum board at http://www.kmess.org/board/
- e-mail at project@kmess.org
- IRC at #kmess on irc.freenode.net
+42
View File
@@ -0,0 +1,42 @@
libISF-Qt (Ink Serialized Format) TODO
-----------------------------------
OUTSTANDING
-----------
- Bit Packing Byte codec:
- Encoding
- Bit Packing Word codec:
- Encoding
- Decoding
- Bit Packing Long codec:
- Encoding
- Decoding
- Read and write user-defined custom tags
- Interpret, use and write pressure information
- Associating text recognized by OCR to the drawn strokes
- Alter stroke points
DONE
----
- State machine:
- Parser
- Writer
- Multibyte values (int,uint,float):
- Encoding
- Decoding
- Huffman codec:
- Encoding
- Decoding
- Bit Packing codec:
- Encoding
- Decoding
- Bit Packing Byte codec:
- Decoding
- Properly parse generated ISF test data
- Generate new ISF data
- Parse ISF data from WLM
- Add new strokes to an IsfDrawing
- Stroke attributes: width, colour, pressure
- Export IsfDrawing to raw-isf, isf-base64 and fortified-gif
- Export IsfDrawing to PNG
- Delete strokes
+19
View File
@@ -0,0 +1,19 @@
# Find LibISF-Qt
# Find the Ink Serialized Format library and includes
# This module defines
# ISFQT_FOUND - If false, do not try to use ISF-Qt
# ISFQT_INCLUDE_DIR - where to find isfqtdrawing.h and friends
# ISFQT_LIBRARIES - the libraries needed to use ISF-Qt
# ISFQT_LIBRARY - Where to find the ISF-Qt library (generally not used)
FIND_PATH( ISFQT_INCLUDE_DIR isfqtdrawing.h /usr/include/isf-qt /usr/local/include/isf-qt )
FIND_LIBRARY( ISFQT_LIBRARY NAMES isf-qt PATH /usr/lib /usr/local/lib )
# handle the QUIETLY and REQUIRED arguments and set ISFQT_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE( FindPackageHandleStandardArgs )
FIND_PACKAGE_HANDLE_STANDARD_ARGS( ISFQT DEFAULT_MSG ISFQT_LIBRARY ISFQT_INCLUDE_DIR )
IF( ISFQT_FOUND )
SET( ISFQT_LIBRARIES ${ISFQT_LIBRARY} )
ENDIF( ISFQT_FOUND )
+14
View File
@@ -0,0 +1,14 @@
# IsfQtConfig.cmake is generated by CMake from cmake/IsfQtConfig.cmake.in.
# Any changed value in this file will be overwritten by CMake.
# Set the version numbers
SET( ISFQT_VERSION @ISFQT_VERSION@ )
SET( ISFQT_VERSION_STRING "@ISFQT_VERSION_STRING@" )
# Set the directories
IF( NOT ISFQT_INSTALL_DIR )
SET( ISFQT_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@" )
ENDIF( NOT ISFQT_INSTALL_DIR )
SET( ISFQT_INCLUDE_DIR "@INCLUDE_INSTALL_DIR@" )
SET( ISFQT_LIBRARY_DIR "@LIB_INSTALL_DIR@" )
+24
View File
@@ -0,0 +1,24 @@
# This file is included here because the standard FindGIF.cmake file
# requires the CHECK_STRUCT_MEMBER macro. It wasn't on my PC, at least, so
# I include a copy of the macro here for giflib to use.
MACRO (CHECK_STRUCT_MEMBER _STRUCT _MEMBER _HEADER _RESULT)
SET(_INCLUDE_FILES)
FOREACH (it ${_HEADER})
SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n")
ENDFOREACH (it)
SET(_CHECK_STRUCT_MEMBER_SOURCE_CODE "
${_INCLUDE_FILES}
int main()
{
${_STRUCT}* tmp;
tmp->${_MEMBER};
return 0;
}
")
CHECK_CXX_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT})
ENDMACRO (CHECK_STRUCT_MEMBER)
+16
View File
@@ -0,0 +1,16 @@
/**
* LibISF-Qt configuration file
*
* The value for these defines is controlled by CMake at configuration time.
*/
// Define the application version
#define ISFQT_VERSION "${ISFQT_VERSION}"
// Define if debug output should be enabled
#if ${ISFQT_DEBUG_OUTPUT}
#define ISFQT_DEBUG
#endif
// Define if fortified-GIF support is enabled
#define ISFQT_GIF_ENABLED ${GIF_ENABLED}
+5
View File
@@ -0,0 +1,5 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>pics/draw-eraser.png</file>
</qresource>
</RCC>
Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.
+16
View File
@@ -0,0 +1,16 @@
<!--#########-->
</div>
<address>
<small>Generated on $datetime for $projectname by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0">
</a>
$doxygenversion
</small>
</address>
</div>
</body>
</html>
+24
View File
@@ -0,0 +1,24 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>$title</title>
<link href="$relpath$doxygen.css" rel="stylesheet" type="text/css"></link>
</head>
<body>
<div id="wrapper">
<h1>ISF-Qt developer documentation
<img class="logo" src="http://kmess.org/projects/isf-qt/isf-qt-logo.png" width="250" height="110" alt="">
</h1>
<div id="menu">
<ul>
<li><a href="index.html">Main&nbsp;Page</a></li>
<li><a href="modules.html">Modules</a></li>
<li><a href="hierarchy.html">Class&nbsp;Hierarchy</a></li>
<li><a href="annotated.html">Class&nbsp;List</a></li>
</ul>
</div>
<div id="content">
<!--#########-->
+393
View File
@@ -0,0 +1,393 @@
/* standard fonts */
body,
td,
th {
font-family: Geneva, Arial, Helvetica, sans-serif;
}
body,
td {
font-size: 100%;
}
code {
font-family: "Courier New", monospace;
font-size: 90%;
}
h1
{
/* main top title */
font-size: 140%;
padding: 5px;
margin: 0;
background-color: #99ccff;
color: #0071BB;
}
img {
margin: 0;
padding: 0;
}
#content h1
{
/* main content title */
text-align: left;
font-size: 160%;
text-align: center;
background-color: transparent;
color: #000;
padding-bottom: 15px;
/* center the element too so the float doesn't interfere */
position: relative;
margin-left: -25%;
width: 50%;
left: 50%;
}
h2 {
/* section title */
font-size: 140%;
}
h2,
h2 a {
color: #000;
}
h3 {
font-size: 110%;
}
h3 {
text-align: center;
/* center the element too so the float doesn't interfere */
position: relative;
margin-left: -25%;
width: 50%;
left: 50%;
}
a, a:visited {
color: #0000cc;
text-decoration: none;
}
a:active, a:hover {
color: #ff0000;
text-decoration: none;
}
hr {
height: 1px;
border: none;
border-top: 1px solid black;
}
#content li {
list-style-type: disc;
}
/* layout of page */
html,body {
background-color: #e6dede;
margin: 0;
}
html {
padding: 0;
}
body {
padding: 10px;
}
#wrapper {
background-color: #fff;
border: 1px solid black;
}
#content {
padding: 0 10px 5px 10px;
}
/* menu and navigation */
.logo {
float: right;
display: inline;
margin: 0 5px 5px 5px;
}
#menu li {
margin: 0;
padding: 0;
list-style-type: none;
float: left;
padding: 1px 5px;
}
#menu ul:after {
clear: left;
display: block;
content: '.';
line-height: 0%;
height: 0;
visibility: hidden;
overflow: none;
}
/* for msie \*/
* html #menu ul {
height: 0.1em;
}
/* end of msie */
#menu ul,
div.qindex {
/* top index */
background-color: #99ccff;
border-bottom: 1px solid #000;
margin: 0;
padding: 4px;
line-height: 140%;
}
div.nav {
/* directory location */
text-align: left;
}
div.nav a.el {
font-style: italic;
font-weight: normal;
font-size: 100%;
}
#menu a,
div.qindex a {
color: #111;
}
#menu a:hover,
div.qindex a:hover {
text-decoration: none;
color: #ff0000;
}
div.qindex a.qindexHL {
/* highlighted menu option */
font-weight: bold;
}
/* element reference in text. may occur everywhere */
a.el,
a.el:active,
a.el:visited { color: #5F2994; }
a.el {
text-decoration: none;
font-weight: normal;
font-size: 16px;
margin: 0;
padding: 0;
}
.fragment {
font-family: monospace
}
pre.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
margin: 4px 8px 4px 2px;
padding: 4px 6px 4px 4px;
}
td.indexkey,
td.indexvalue {
background-color: #eeeeff;
background-color: #C9E2FF;
padding: 2px 10px 2px 10px
margin: 2px 0px 2px 0px;
border: 1px solid #CCCCCC;
}
td.indexkey {
font-weight: bold;
}
TR.memlist {
/* separate member list page */
background-color: #D6EEFF;
}
/* not encountered
P.formulaDsp { text-align: center; }
IMG.formulaDsp { }
IMG.formulaInl { vertical-align: middle; }
*/
/* source code highlights */
SPAN.keyword { color: #008000 }
SPAN.keywordtype { color: #604020 }
SPAN.keywordflow { color: #e08000 }
SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }
/* Member description header */
.mdTable {
border: 1px solid #868686;
background-color: #C9E2FF;
width: 100%;
margin-top: 20px;
}
.mdRow {
padding: 4px 5px;
vertical-align: top;
}
.md {
font-weight: bold;
}
td.mdname1 {
font-weight: bold;
color: #602020;
}
td.mdname {
/* parameter name in member description */
font-weight: bold;
color: #602020;
}
.mdPrefix {
/* template prefix in member description */
color: #606060;
font-size: 80%;
}
/* member summary table */
.mdescLeft,
.mdescRight {
padding: 0 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #D3E9FF;
border: 1px none #E0E0E0;
margin: 0;
vertical-align: top;
}
.memItemLeft,
.memTemplItemLeft,
.memItemRight,
.memTemplItemRight {
border-top: 1px solid #868686;
background-color: #C9E2FF;
font-size: 80%;
vertical-align: top;
}
.memItemLeft,
.memTemplItemLeft {
padding: 1px 0px 0px 8px;
}
.memItemRight,
.memTemplItemRight {
padding: 1px 8px 0px 8px;
}
.memTemplParams {
/* template prefix in function list */
border-top: 1px solid #868686;
background-color: #C9E2FF;
font-size: 80%;
padding: 1px 0px 0px 8px;
margin: 4px;
font-size: 80%;
}
/* member sections */
.memitem {
padding-bottom: 2ex;
}
.memproto {
border-top: 1px dashed #333;
padding: 1ex 4px 0 4px;
margin: 0;
color: #333;
}
.memproto td {
color: #333;
font-size: 110%;
font-weight: bold;
}
.memname {
white-space: nowrap;
font-size: 105%;
}
.memdoc {
padding-left: 10px;
}
.memdoc p:first-child {
margin-top: 0;
padding-top: 0.5ex;
margin-right: 4em;
}
.memdoc dl,
.memdoc dt,
.memdoc dd {
margin-top: 0;
margin-bottom: 0;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
font-style: italic;
white-space: nowrap;
}
.directory p {
margin: 0;
padding: 0;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

+1
View File
@@ -0,0 +1 @@
#include "isfinkcanvas.h"
+1
View File
@@ -0,0 +1 @@
#include "isfqt.h"
+1
View File
@@ -0,0 +1 @@
#include "isfqtdrawing.h"
+1
View File
@@ -0,0 +1 @@
#include "isfqtstroke.h"
+8
View File
@@ -0,0 +1,8 @@
#ifndef ISFQT_QMATRIX_COMPAT_H
#define ISFQT_QMATRIX_COMPAT_H
#include <QTransform>
using QMatrix = QTransform;
#endif
+173
View File
@@ -0,0 +1,173 @@
/***************************************************************************
* Copyright (C) 2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* Copyright (C) 2009 by Adam Goossens *
* adam@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFINKCANVAS_H
#define ISFINKCANVAS_H
#include <QWidget>
#include "isfqt.h"
#include "isfqtdrawing.h"
namespace Isf
{
/**
* @class InkCanvas
* @brief This is a control designed for the drawing and display of Ink.
*
* InkCanvas is used for drawing and displaying Ink. The currently displayed Ink drawing can be retrieved
* or set using the drawing() and setDrawing() methods.
*
* To set the properties of the current pen, use the setPenColor(), setPenSize() and setPenType() methods.
* The supported pen types are outlined in the PenType enumeration documentation.
*
* Example:
*
* \code
* InkCanvas* canvas = new Isf::InkCanvas( this );
* canvas->setPenColor( Qt::blue );
* canvas->setPenSize( 10 );
*
* // the pen is now 10 pixels thick and blue.
*
* canvas->setPenType( EraserPen );
*
* // now an eraser will be used and strokes can be erased individually.
* \endcode
*
* To return the currently displayed Ink as a QImage, use image(). To return the raw ISF data, suitable
* for saving to disk or sending over a network, use bytes().
*
* To write the ISF data directly to a QIODevice, such as a file, use the save() method.
*
* Connect to the inkChanged() signal to be notified when the drawing displayed on the canvas changes,
* either through strokes being drawn or deleted, or the current drawing being changed.
*
* @author Adam Goossens (adam@kmess.org)
*/
class InkCanvas : public QWidget
{
Q_OBJECT
public: // public enumerations
/**
* The various types of pens supported by InkCanvas.
*
* The DrawingPen is a standard pen for drawing new strokes onto the canvas.
* The pen size and color are controlled by setPenSize() and setPenColor().
*
* The EraserPen is used for erasing individual strokes. Pixel-by-pixel erase is not
* yet supported.
*/
enum PenType
{
DrawingPen, ///< Used to draw Ink
EraserPen ///< Used to erase by stroke
};
public: // public constructors
InkCanvas( QWidget* = 0 );
~InkCanvas();
public: // public methods
QByteArray bytes();
Isf::Drawing* drawing();
QImage image();
bool isEmpty();
QColor penColor();
int penSize();
PenType penType();
void save( QIODevice&, bool = false );
void setDrawing( Isf::Drawing* );
QSize sizeHint() const override;
public slots:
void clear();
void setCanvasColor( QColor );
void setPenColor( QColor );
void setPenSize( int );
void setPenType( PenType );
protected: // protected methods
void mousePressEvent( QMouseEvent* ) override;
void mouseMoveEvent( QMouseEvent* ) override;
void mouseReleaseEvent( QMouseEvent* ) override;
void paintEvent( QPaintEvent* ) override;
void resizeEvent( QResizeEvent* ) override;
private: // private methods
void drawLineTo( const QPoint& );
void clearBuffer();
void updateCursor();
private: // private attributes
/// Color of the canvas background
QColor canvasColor_;
/// Color of current pen
QColor color_;
/// Cursor pixmap
QPixmap cursorPixmap_;
/// Current cursor
QCursor cursor_;
/// It's true if the erase brush was selected
bool erasingImage_;
/// Current drawing being manipulated
Isf::Drawing* drawing_;
/// Initial drawing, can be overridden with drawing_
Isf::Drawing initialDrawing_;
/// Last point where the mouse pointer was released
QPoint lastPoint_;
/// True if the user is painting
bool scribbling_;
/// Pen size, in pixels.
int penSize_;
/// Pen type
PenType penType_;
/// The current stroke being drawn
Isf::Stroke* currentStroke_;
/// The pixmap buffer where in progress strokes are drawn
QPixmap bufferPixmap_;
/// Cache pixmap so the Ink isn't redrawn on every mouse move
QPixmap isfCachePixmap_;
/// Dirty value used to update isf cache pixmap.
bool drawingDirty_;
signals:
/// Emitted when the ink representation is modified (stroke drawn,
/// stroke deleted, current drawing changed).
void inkChanged();
};
}; // namespace Isf
#endif // ISFINKCANVAS_H
+322
View File
@@ -0,0 +1,322 @@
/***************************************************************************
* Copyright (C) 2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* Copyright (C) 2009 by Adam Goossens *
* adam@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFQT_H
#define ISFQT_H
#include <QColor>
#include <QList>
#include <QMap>
#include <QMatrix>
#include <QPointF>
#include <QRectF>
#include <QSizeF>
#include <QtGlobal>
namespace Isf
{
// Forward declarations
class Drawing;
class StreamData;
/**
* Possible error return values returned by the ISF library.
*/
enum IsfError
{
ISF_ERROR_NONE = 0 ///< No error
/// Stream reader errors
, ISF_ERROR_BAD_VERSION ///< Incompatible ISF version
, ISF_ERROR_BAD_STREAMSIZE ///< Stream size of ISF data is too small
, ISF_ERROR_INVALID_STREAM ///< The stream contains wrong or duplicated tags
, ISF_ERROR_INVALID_PAYLOAD ///< A tag's payload was empty
, ISF_ERROR_INVALID_BLOCK ///< A block had invalid contents
/// Other errors
, ISF_ERROR_INTERNAL ///< An error within the code has occurred
};
/**
* List of predefined packet properties.
*
* These are used with strokes and their attributes.
* The Metrics structure defines how to interpret these properties.
*/
enum PacketProperty
{
KNOWN_GUID_BASE_INDEX = 50
, GUID_X = KNOWN_GUID_BASE_INDEX + 0
, GUID_Y = KNOWN_GUID_BASE_INDEX + 1
, GUID_Z // = et cetera
, GUID_PACKET_STATUS
, GUID_TIMER_TICK
, GUID_SERIAL_NUMBER
, GUID_NORMAL_PRESSURE
, GUID_TANGENT_PRESSURE
, GUID_BUTTON_PRESSURE
, GUID_X_TILT_ORIENTATION
, GUID_Y_TILT_ORIENTATION // = KNOWN_GUID_BASE_INDEX + 10
, GUID_AZIMUTH_ORIENTATION
, GUID_ALTITUDE_ORIENTATION
, GUID_TWIST_ORIENTATION
, GUID_PITCH_ROTATION
, GUID_ROLL_ROTATION
, GUID_YAW_ROTATION
, GUID_PEN_STYLE
, GUID_COLORREF
, GUID_PEN_WIDTH
, GUID_PEN_HEIGHT // = KNOWN_GUID_BASE_INDEX + 20
, GUID_PEN_TIP
, GUID_DRAWING_FLAGS
, GUID_CURSORID
, GUID_WORD_ALTERNATES
, GUID_CHAR_ALTERNATES
, GUID_INKMETRICS
, GUID_GUIDE_STRUCTURE
, GUID_TIME_STAMP
, GUID_LANGUAGE
, GUID_TRANSPARENCY // = KNOWN_GUID_BASE_INDEX + 30
, GUID_CURVE_FITTING_ERROR
, GUID_RECO_LATTICE
, GUID_CURSORDOWN
, GUID_SECONDARYTIPSWITCH
, GUID_BARRELDOWN
, GUID_TABLETPICK
, GUID_ROP // = KNOWN_GUID_BASE_INDEX + 37
, KNOWN_GUID_LAST_INDEX
};
/**
* Available pen tips.
*/
enum PenTip
{
Ball = 0 ///< The pen tip is a circle
, Rectangle = 1 ///< The pen tip is a square or a rectangle
};
/**
* Stroke drawing flags.
*/
enum StrokeFlag
{
FitToCurve = 0x0001 ///< Fit the lines between stroke points to Bezier curves
, IgnorePressure = 0x0004 ///< Ignore the pressure level for this stroke
, IsHighlighter = 0x0100 ///< This stroke is an highlighter stroke
, IsRectangle = 0x0200 ///< Meaning unknown
};
Q_DECLARE_FLAGS( StrokeFlags, StrokeFlag );
Q_DECLARE_OPERATORS_FOR_FLAGS( StrokeFlags );
/**
* Units used for metric measurements.
*
* @see http://msdn.microsoft.com/en-us/library/ms840884.aspx
*/
enum MetricScale
{
UNIT_UNUSED = -1
, UNIT_DEFAULT = 0
, UNIT_INCH = 1
, UNIT_CENTIMETER = 2
, UNIT_DEGREE = 3
, UNIT_RADIAN = 4
, UNIT_SECOND = 5
, UNIT_POUND = 6
, UNIT_GRAM = 7
};
/**
* A single metric.
*
* It is a set of values representing what kind of values some
* type of measurement will assume.
*/
struct Metric
{
/// Constructor for invalid metrics
Metric()
{
}
/// Initialized constructor
Metric( qint64 vMin, qint64 vMax, MetricScale vUnits, float vResolution )
: min( vMin )
, max( vMax )
, units( vUnits )
, resolution( vResolution )
{
}
/// Quick comparison operator
bool operator ==( const Metric& other )
{
return min == other.min
&& max == other.max
&& units == other.units
&& resolution == other.resolution;
}
/// Minimum value
qint64 min;
/// Maximum value
qint64 max;
/// Measurement unit
MetricScale units;
/// Resolution
float resolution;
};
/**
* A table of metrics.
*
* The default metric values are hard-coded here, different values read from the stream
* will override these.
*/
struct Metrics
{
/// Constructor
Metrics()
{
items[ GUID_X ] = Metric( 0, 12699, UNIT_CENTIMETER, 1000 );
items[ GUID_Y ] = Metric( 0, 9649, UNIT_CENTIMETER, 1000 );
items[ GUID_Z ] = Metric( -1023, 1023, UNIT_CENTIMETER, 1000 );
items[ GUID_PACKET_STATUS ] = Metric( 0, 1023, UNIT_DEFAULT, 1 );
items[ GUID_TIMER_TICK ] = Metric( 0, 1023, UNIT_DEFAULT, 1 );
items[ GUID_SERIAL_NUMBER ] = Metric( 0, 1023, UNIT_DEFAULT, 1 );
items[ GUID_NORMAL_PRESSURE ] = Metric( 0, 3600, UNIT_DEGREE, 10 );
items[ GUID_TANGENT_PRESSURE ] = Metric( 0, 3600, UNIT_DEGREE, 10 );
items[ GUID_BUTTON_PRESSURE ] = Metric( 0, 3600, UNIT_DEGREE, 10 );
items[ GUID_X_TILT_ORIENTATION ] = Metric( -900, 900, UNIT_DEGREE, 10 );
items[ GUID_Y_TILT_ORIENTATION ] = Metric( 0, 3600, UNIT_DEGREE, 10 );
items[ GUID_AZIMUTH_ORIENTATION ] = Metric( -1, -1, UNIT_UNUSED, -1 );
items[ GUID_ALTITUDE_ORIENTATION ] = Metric( -1, -1, UNIT_UNUSED, -1 );
items[ GUID_TWIST_ORIENTATION ] = Metric( -1, -1, UNIT_UNUSED, -1 );
items[ GUID_PITCH_ROTATION ] = Metric( -1, -1, UNIT_UNUSED, -1 );
items[ GUID_ROLL_ROTATION ] = Metric( -1, -1, UNIT_UNUSED, -1 );
items[ GUID_YAW_ROTATION ] = Metric( -1, -1, UNIT_UNUSED, -1 );
}
/// The list of metrics defined in this table
QMap<int,Metric> items;
};
/**
* A single point within a stroke.
*/
struct Point
{
/// Empty constructor
Point()
: position( 0, 0 )
, pressureLevel( 0 )
{
}
/// Constructor with point only
Point( const QPoint& point )
: position( point )
, pressureLevel( 0 )
{
}
/// Constructor with point and pressure
Point( const QPoint& point, const qint64 pressure )
: position( point )
, pressureLevel( pressure )
{
}
/// Quick comparison operator
bool operator ==( const Point& other )
{
return position == other.position
&& pressureLevel == other.pressureLevel;
}
/// coordinates
QPoint position;
/// Pressure information
qint64 pressureLevel;
};
/**
* A list of Point items.
*/
typedef QList<Point> PointList;
/**
* Conversion factor to convert from HiMetric units to pixels.
*/
const qreal HiMetricToPixel = 26.4572454037811;
/**
* @class Stream
* @brief The main class of the library.
*
* This class contains the only methods you need to transform ISF data
* into strokes or pictures, and from strokes to ISF data.
*/
class Stream
{
public: // Public static methods
static Drawing &reader( const QByteArray&, bool = false );
static Drawing &readerGif( const QByteArray&, bool = false );
static Drawing &readerPng( const QByteArray&, bool = false );
static bool supportsGif();
static QByteArray writer( const Drawing&, bool = false );
static QByteArray writerGif( const Drawing&, bool = false );
static QByteArray writerPng( const Drawing&, bool = false );
private: // Private static properties
static StreamData* streamData_;
};
}
#endif
+133
View File
@@ -0,0 +1,133 @@
/***************************************************************************
* Copyright (C) 2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* Copyright (C) 2009 by Adam Goossens *
* adam@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFQTDRAWING_H
#define ISFQTDRAWING_H
#include <IsfQt>
#include <IsfQtStroke>
#include <QMap>
#include <QMatrix>
#include <QPaintDevice>
#include <QUuid>
#include <QPixmap>
// Forward declarations
class QByteArray;
class AttributeSet;
namespace Isf
{
/**
* @class Drawing
* @brief This is a manipulable representation of an ISF stream.
*
* This class is a container for the data of ISF (Ink Serialized Format)
* drawings. You can manipulate its contents, or create a new one and
* fill it, then save it back to ISF format with the Isf::Stream methods.
*
* @see Isf::Stream
* @author Adam Goossens (adam@kmess.org)
* @author Valerio Pilo (valerio@kmess.org)
*/
class Drawing
{
friend class Stream;
friend class TagsParser;
friend class TagsWriter;
public: // public constructors
Drawing();
Drawing( const Drawing& );
~Drawing();
public: // public state retrieval methods
QRect boundingRect() const;
void clear();
IsfError error() const;
qint32 indexOfStroke( const Stroke* ) const;
bool isEmpty() const;
bool isNull() const;
QPixmap pixmap( const QColor = Qt::transparent );
void setBoundingRect( QRect );
QSize size() const;
Stroke* stroke( quint32 );
Stroke* strokeAtPoint( const QPoint& );
const QList<Stroke*> strokes();
public: // public manipulation methods
qint32 addStroke( Stroke* );
qint32 addStroke( PointList = PointList() );
bool deleteStroke( quint32 );
bool deleteStroke( Stroke* );
private:
void updateBoundingRect();
private: // Private properties
/// Bounding rectangle of the drawing
QRect boundingRect_;
/// Cached bounding rectangle
QRect cacheRect_;
/// The cached pixmap
QPixmap cachePixmap_;
/// Virtual drawing canvas dimensions
QRect canvas_;
/// A list of strokes that need to be repainted.
QList<Stroke*> changedStrokes_;
/// Is the drawing dirty? i.e, requires repainting?
bool dirty_;
/// Last parsing error (if there is one)
IsfError error_;
/// List of registered GUIDs
QList<QUuid> guids_;
/// Whether the drawing contains X coordinates or not
bool hasXData_;
/// Whether the drawing contains Y coordinates or not
bool hasYData_;
/// Whether the drawing is invalid or valid
bool isNull_;
/// Maximum GUID available in the drawing
quint64 maxGuid_;
/// Maximum thickness of the strokes
QSizeF maxPenSize_;
/// List of strokes composing this drawing
QList<Stroke*> strokes_;
};
}; // namespace Isf
#endif // ISFQTDRAWING_H
+117
View File
@@ -0,0 +1,117 @@
/***************************************************************************
* Copyright (C) 2010 by Valerio Pilo *
* valerio@kmess.org *
* *
* Copyright (C) 2010 by Adam Goossens *
* adam@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFQTSTROKE_H
#define ISFQTSTROKE_H
#include <IsfQt>
#include <QColor>
#include <QList>
#include <QMatrix>
#include <QRect>
#include <QSizeF>
// Forward declarations
class QPainterPath;
namespace Isf
{
// Forward declarations
class AttributeSet;
/**
* A pen stroke.
*/
class Stroke
{
public:
Stroke();
Stroke( const Stroke& );
~Stroke();
void addPoint( Point );
void addPoints( PointList );
QRect boundingRect() const;
QColor color() const;
void finalize();
StrokeFlags flags() const;
bool hasPressureData() const;
Metrics* metrics();
QPainterPath painterPath();
QSizeF penSize() const;
PointList& points();
void setColor( QColor );
void setFlag( StrokeFlag, bool = true );
void setFlags( StrokeFlags );
void setMetrics( Metrics* );
void setPenSize( QSizeF );
void setTransform( QMatrix* );
QMatrix* transform();
private:
void bezierCalculateControlPoints();
void bezierGetFirstControlPoints( double[], double*, int );
private:
/// Bezier data
QList<QPointF> bezierControlPoints1_;
QList<QPointF> bezierControlPoints2_;
QList<QPointF> bezierKnots_;
/// Bounding rectangle of this stroke
QRect boundingRect_;
/// The stroke color, optionally with alpha channel
QColor color_;
/// Whether the stroke data needs to be analyzed or not
bool finalized_;
/// Mask of StrokeFlags, @see StrokeFlags
StrokeFlags flags_;
/// Whether the stroke contains pressure information or not
bool hasPressureData_;
/// Link to this stroke's metrics, if any
Metrics* metrics_;
/// Dimensions of the pencil in pixels
QSizeF penSize_;
/// List of points
PointList points_;
/// Link to this stroke's transformation, if any
QMatrix* transform_;
};
}; // namespace Isf
#endif // ISFQTSTROKE_H
+4
View File
@@ -0,0 +1,4 @@
[Project]
Name=isf-qt
Manager=KDevCMakeManager
VersionControl=
+220
View File
@@ -0,0 +1,220 @@
<?xml version = '1.0'?>
<kdevelop>
<general>
<projectmanagement>KDevCustomProject</projectmanagement>
<projectdirectory>.</projectdirectory>
<absoluteprojectpath>false</absoluteprojectpath>
<author>The KMess Development Team</author>
<email>project@kmess.org</email>
<version>0.1</version>
<primarylanguage>C++</primarylanguage>
<ignoreparts>
<part>kdevtools</part>
<part>kdevfileview</part>
<part>kdevquickopen</part>
<part>kdevabbrev</part>
<part>kdevastyle</part>
<part>kdevsnippet</part>
<part>kdevctags2</part>
<part>kdevfilelist</part>
<part>kdevscripting</part>
<part>kdevbookmarks</part>
<part>kdevtexttools</part>
<part>kdevdoxygen</part>
<part>kdevdistpart</part>
<part>kdevregexptest</part>
</ignoreparts>
<secondaryLanguages/>
<projectname>isf-qt</projectname>
<description>LibISF-Qt is a library to encode and decode Microsoft's Digital Ink format (Ink Serialized Format).</description>
<defaultencoding/>
<versioncontrol>kdevsubversion</versioncontrol>
</general>
<kdevcustomproject>
<filelistdirectory>/home/valerio/kmess/trunk/contrib/isf-qt/</filelistdirectory>
<run>
<mainprogram>/home/valerio/kmess/trunk/contrib/isf-qt/build/tests/test_isfdrawing</mainprogram>
<directoryradio>custom</directoryradio>
<customdirectory>./build/</customdirectory>
<programargs># tests/test1.isf</programargs>
<terminal>false</terminal>
<autocompile>false</autocompile>
<envvars>
<envvar value="en-US.UTF-8" name="LANG" />
</envvars>
<globaldebugarguments># tests/line2.isf</globaldebugarguments>
<globalcwd>/home/valerio/kmess/trunk/contrib/isf-qt</globalcwd>
<useglobalprogram>false</useglobalprogram>
<autoinstall>false</autoinstall>
<autokdesu>true</autokdesu>
</run>
<build>
<buildtool>make</buildtool>
<builddir>/home/valerio/kmess/trunk/contrib/isf-qt/build/</builddir>
</build>
<make>
<abortonerror>false</abortonerror>
<numberofjobs>2</numberofjobs>
<dontact>false</dontact>
<makebin>make</makebin>
<selectedenvironment>default</selectedenvironment>
<environments>
<default/>
</environments>
<prio>0</prio>
<defaulttarget/>
<makeoptions/>
</make>
<filetypes>
<filetype>*.h</filetype>
<filetype>*.cpp</filetype>
<filetype>CMakeLists.txt</filetype>
<filetype>*.ui</filetype>
</filetypes>
<blacklist>
<path>build</path>
<path>build/CMakeFiles</path>
<path>build/CMakeFiles/CompilerIdCXX</path>
<path>build/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp</path>
<path>build/isfqtconfig.h</path>
<path>build/tests</path>
<path>build/tests/decode</path>
<path>build/tests/decode/ui_testdecode.h</path>
</blacklist>
<other>
<prio>0</prio>
<otherbin/>
<defaulttarget/>
<otheroptions/>
<selectedenvironment>default</selectedenvironment>
<environments>
<Debug/>
<Release/>
<default/>
</environments>
</other>
</kdevcustomproject>
<kdevfilecreate>
<filetypes/>
<useglobaltypes>
<type ext="ui" />
<type ext="cpp" />
<type ext="h" />
</useglobaltypes>
</kdevfilecreate>
<kdevdoctreeview>
<projectdoc>
<userdocDir>html/</userdocDir>
<apidocDir>html/</apidocDir>
</projectdoc>
<ignoreqt_xml/>
<ignoredoxygen/>
<ignorekdocs/>
<ignoretocs/>
<ignoredevhelp/>
</kdevdoctreeview>
<cppsupportpart>
<filetemplates>
<interfacesuffix>.h</interfacesuffix>
<implementationsuffix>.cpp</implementationsuffix>
</filetemplates>
</cppsupportpart>
<kdevcppsupport>
<codecompletion>
<includeGlobalFunctions>true</includeGlobalFunctions>
<includeTypes>true</includeTypes>
<includeEnums>true</includeEnums>
<includeTypedefs>false</includeTypedefs>
<automaticCodeCompletion>true</automaticCodeCompletion>
<automaticArgumentsHint>true</automaticArgumentsHint>
<automaticHeaderCompletion>true</automaticHeaderCompletion>
<codeCompletionDelay>1500</codeCompletionDelay>
<argumentsHintDelay>1500</argumentsHintDelay>
<headerCompletionDelay>250</headerCompletionDelay>
<showOnlyAccessibleItems>false</showOnlyAccessibleItems>
<completionBoxItemOrder>0</completionBoxItemOrder>
<howEvaluationContextMenu>true</howEvaluationContextMenu>
<showCommentWithArgumentHint>true</showCommentWithArgumentHint>
<statusBarTypeEvaluation>true</statusBarTypeEvaluation>
<namespaceAliases>std=_GLIBCXX_STD;__gnu_cxx=std</namespaceAliases>
<processPrimaryTypes>true</processPrimaryTypes>
<processFunctionArguments>true</processFunctionArguments>
<preProcessAllHeaders>true</preProcessAllHeaders>
<parseMissingHeadersExperimental>false</parseMissingHeadersExperimental>
<resolveIncludePathsUsingMakeExperimental>false</resolveIncludePathsUsingMakeExperimental>
<alwaysParseInBackground>true</alwaysParseInBackground>
<usePermanentCaching>true</usePermanentCaching>
<alwaysIncludeNamespaces>true</alwaysIncludeNamespaces>
<includePaths>.;</includePaths>
</codecompletion>
<references/>
<qt>
<used>true</used>
<version>4</version>
<includestyle>4</includestyle>
<root>/usr/lib/qt3</root>
<designerintegration>ExternalDesigner</designerintegration>
<qmake>/usr/bin/qmake</qmake>
<designer>/usr/bin/designer</designer>
<designerpluginpaths/>
</qt>
<creategettersetter>
<prefixGet>get</prefixGet>
<prefixSet>set</prefixSet>
<prefixVariable/>
<parameterName>value</parameterName>
<inlineGet>true</inlineGet>
<inlineSet>true</inlineSet>
</creategettersetter>
<splitheadersource>
<enabled>false</enabled>
<synchronize>true</synchronize>
<orientation>Vertical</orientation>
</splitheadersource>
</kdevcppsupport>
<kdevfileview>
<groups>
<group pattern="CMakeLists.txt;*.cmake;" name="CMake" />
<group pattern="*.h;*.hxx" name="Header" />
<group pattern="*.cpp;*.c;*.C;*.cxx" name="Sources" />
<group pattern="*.ui" name="Qt Designer files" />
<hidenonprojectfiles>true</hidenonprojectfiles>
<hidenonlocation>false</hidenonlocation>
</groups>
<tree>
<hidepatterns>*.o,*.lo,CVS,*~,cmake*</hidepatterns>
<hidenonprojectfiles>true</hidenonprojectfiles>
<showvcsfields>false</showvcsfields>
</tree>
</kdevfileview>
<kdevdebugger>
<general>
<gdbpath/>
<dbgshell/>
<configGdbScript/>
<runShellScript/>
<runGdbScript/>
<breakonloadinglibs>true</breakonloadinglibs>
<separatetty>false</separatetty>
<floatingtoolbar>false</floatingtoolbar>
<raiseGDBOnStart>false</raiseGDBOnStart>
</general>
<display>
<staticmembers>false</staticmembers>
<demanglenames>true</demanglenames>
<outputradix>10</outputradix>
</display>
</kdevdebugger>
<kdevdocumentation>
<projectdoc>
<docsystem/>
<docurl/>
<usermanualurl/>
</projectdoc>
</kdevdocumentation>
<ctagspart>
<customArguments/>
<customTagfilePath>./tags</customTagfilePath>
<activeTagsFiles/>
</ctagspart>
</kdevelop>
+77
View File
@@ -0,0 +1,77 @@
#### Source files definitions ####
SET( ISFQT_SOURCES
data/algorithms/bitpacking.cpp
data/algorithms/bitpacking_byte.cpp
data/algorithms/huffman.cpp
data/algorithms/deltatransform.cpp
data/compression.cpp
data/datasource.cpp
data/multibytecoding.cpp
isfqtdrawing.cpp
tagsparser.cpp
tagswriter.cpp
isfqt.cpp
isfinkcanvas.cpp
isfqtstroke.cpp
)
SET( ISFQT_PUBLIC_HEADERS
../include/isfqt.h
../include/isfqtdrawing.h
../include/isfinkcanvas.h
../include/isfqtstroke.h
../include/IsfQtDrawing
../include/IsfInkCanvas
../include/IsfQtStroke
../include/IsfQt
)
SET( ISFQT_LIBS
Qt6::Core
Qt6::Core5Compat
Qt6::Gui
Qt6::Widgets
)
SET( ISFQT_RCCS
../data/isfqtresources.qrc
)
IF( GIF_FOUND )
INCLUDE_DIRECTORIES( ${GIF_INCLUDE_DIR} )
SET( ISFQT_LIBS ${ISFQT_LIBS} ${GIF_LIBRARIES} )
ENDIF( GIF_FOUND )
#### Compilation ####
QT6_WRAP_CPP( MOC_SRCS ../include/isfinkcanvas.h )
QT6_ADD_RESOURCES( ISFQT_RCC_SRCS ${ISFQT_RCCS} )
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
# Do not install the library if we're bundling it into an application
IF( ISFQT_IS_BUNDLED )
ADD_LIBRARY( isf-qt STATIC ${ISFQT_SOURCES} ${MOC_SRCS} ${ISFQT_RCC_SRCS} )
ELSE()
ADD_LIBRARY( isf-qt SHARED ${ISFQT_SOURCES} ${MOC_SRCS} ${ISFQT_RCC_SRCS} )
ENDIF()
TARGET_LINK_LIBRARIES( isf-qt ${ISFQT_LIBS} )
SET_TARGET_PROPERTIES( isf-qt PROPERTIES
VERSION ${ISFQT_VERSION}
SOVERSION ${ISFQT_VERSION} )
#### Installation ####
# Do not install the library if we're bundling it in KMess
IF( NOT ISFQT_IS_BUNDLED )
INSTALL( TARGETS isf-qt LIBRARY
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" )
INSTALL( FILES ${ISFQT_PUBLIC_HEADERS}
DESTINATION "${CMAKE_INSTALL_PREFIX}/include/isf-qt" )
ENDIF()
@@ -0,0 +1,196 @@
/***************************************************************************
* Copyright (C) 2008-2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "isfqt-internal.h"
#include "bitpacking.h"
#include <math.h>
#include <QDebug>
using namespace Isf::Compress;
/**
* Get the most appropriate block size for the given data.
*
* @param data Data to analyze
* @return Block size
*/
quint8 BitPackingAlgorithm::blockSize( const QList<qint64>& data )
{
quint8 blockSize = 0;
qint64 num;
for( qint32 index = 0; index < data.size(); ++index )
{
num = data[ index ];
if( num < 0 )
{
// We need the positive numbers: the +1 is for the sign bit
num += - (num + 1);
}
// Shift right the value by blockSize bits until it becomes zero:
// we need to detect the maximum bitwise size required to store
// the numbers in the data array.
num >>= blockSize;
while( num )
{
++blockSize;
num >>= 1;
}
}
// The sign bit always takes up a bit
++blockSize;
return blockSize;
}
/**
* Compress data with the Bit Packing algorithm.
*
* @param encodedData Byte array where to store the compressed data
* @param blockSize Block size to use for compression
* @param source List of values to compress
* @return bool
*/
bool BitPackingAlgorithm::deflate( QByteArray& encodedData, quint8 blockSize, const QList<qint64>& source )
{
if( blockSize > 64 )
{
qWarning() << "A block size of" << blockSize << "is too high!";
blockSize = 64; // Fuck it :P
}
quint8 blockSizeLeft; // Remaining bits to encode of the current value
quint8 freeBits = 8; // Free bits of the current byte, in LSB order
quint8 signMask = 1 << ( blockSize - 1 ); // Mask to add the sign bit
quint8 byte = 0; // Byte to add to the array
qint64 currentValue;
for( qint64 index = 0; index < source.count(); ++index )
{
currentValue = source[ index ];
if( currentValue < 0 )
{
currentValue |= signMask;
}
blockSizeLeft = blockSize;
if( freeBits >= blockSizeLeft )
{
freeBits -= blockSizeLeft;
byte |= currentValue << freeBits;
encodedData.append( byte );
byte = 0;
freeBits = 8;
}
else
{
// Fill the current byte
quint64 mask = 0xFFFFFFFF >> ( 32 - blockSizeLeft );
byte |= currentValue >> ( blockSizeLeft - freeBits );
encodedData.append( byte );
byte = 0;
blockSizeLeft -= freeBits;
mask >>= freeBits;
currentValue &= mask;
// Then fill all the next bytes required to encode the current value,
// except the last one
while( blockSizeLeft > 8 )
{
blockSizeLeft -= 8;
encodedData.append( currentValue >> blockSizeLeft );
mask >>= 8;
currentValue &= mask;
}
// Finally, add the last byte
freeBits = 8 - blockSizeLeft;
encodedData.append( currentValue << freeBits );
}
}
return true;
}
/**
* Decompress data with the Bit Packing algorithm.
*
* @param source Data source where to read the compressed bytes
* @param length Number of items to read
* @param blockSize Block size to use for compression
* @param decodedData List where to place decompressed values
* @return bool
*/
bool BitPackingAlgorithm::inflate( DataSource* source, quint64 length, quint8 blockSize, QList<qint64>& decodedData )
{
if( blockSize > 64 )
{
qWarning() << "A block size of" << blockSize << "is too high!";
blockSize = 64; // Fuck it :P
}
if( source->atEnd() )
{
qWarning() << "Cannot inflate: no more bits available!";
return true;
}
qint64 value;
quint32 index = 0;
quint64 signMask = (quint64)( 0xFFFFFFFF * pow( 2, blockSize - 1 ) ) & 0xFFFFFFFF;
while( index++ < length )
{
value = source->getBits( blockSize );
// If the mask matches, the sign bit is set, so ORing value and mask will
// set all leftmost bits to 1, making it a real 64bit signed integer
if( value & signMask )
{
value |= signMask;
}
decodedData.append( value );
}
return true;
}
@@ -0,0 +1,45 @@
/***************************************************************************
* Copyright (C) 2008 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFCOMPRESSION_BITPACKING_H
#define ISFCOMPRESSION_BITPACKING_H
#include "../datasource.h"
namespace Isf
{
namespace Compress
{
namespace BitPackingAlgorithm
{
quint8 blockSize( const QList<qint64>& data );
bool deflate( QByteArray& encodedData, quint8 blockSize, const QList<qint64>& source );
bool inflate( DataSource* source, quint64 length, quint8 blockSize, QList<qint64>& decodedData );
}
}
}
#endif
@@ -0,0 +1,202 @@
/***************************************************************************
* Copyright (C) 2008-2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "isfqt-internal.h"
#include "bitpacking_byte.h"
#include "bitpacking_table.h"
using namespace Isf::Compress;
/**
* Get the most appropriate index for the given data.
*
* @param data Data to analyze
* @return Index value
*/
quint8 BitPackingByteAlgorithm::index( const QList<qint64>& data )
{
Q_UNUSED( data );
quint8 index = 0;
/*
qint64 num;
for( qint32 index = 0; index < data.size(); ++index )
{
num = data[ index ];
if( num < 0 )
{
// We need the positive numbers: the +1 is for the sign bit
num += - (num + 1);
}
// Shift right the value by index bits until it becomes zero:
// we need to detect the maximum bitwise size required to store
// the numbers in the data array.
num >>= index;
while( num )
{
++index;
num >>= 1;
}
}
// The sign bit always takes up a bit
++index;
*/
return index;
}
/**
* Compress data with the Bit Packing algorithm.
*
* @param encodedData Byte array where to store the compressed data
* @param index Index to use for compression
* @param source List of values to compress
* @return bool
*/
bool BitPackingByteAlgorithm::deflate( QByteArray& encodedData, quint8 index, const QList<qint64>& source )
{
Q_UNUSED( encodedData );
Q_UNUSED( index );
Q_UNUSED( source );
/*
if( blockSize > 64 )
{
qWarning() << "A block size of" << blockSize << "is too high!";
blockSize = 64; // Fuck it :P
}
quint8 blockSizeLeft; // Remaining bits to encode of the current value
quint8 freeBits = 8; // Free bits of the current byte, in LSB order
quint8 signMask = 1 << ( blockSize - 1 ); // Mask to add the sign bit
quint8 byte = 0; // Byte to add to the array
qint64 currentValue;
for( qint64 index = 0; index < source.count(); ++index )
{
currentValue = source[ index ];
if( currentValue < 0 )
{
currentValue |= signMask;
}
blockSizeLeft = blockSize;
if( freeBits >= blockSizeLeft )
{
freeBits -= blockSizeLeft;
byte |= currentValue << freeBits;
encodedData.append( byte );
byte = 0;
freeBits = 8;
}
else
{
// Fill the current byte
quint64 mask = 0xFFFFFFFF >> ( 32 - blockSizeLeft );
byte |= currentValue >> ( blockSizeLeft - freeBits );
encodedData.append( byte );
byte = 0;
blockSizeLeft -= freeBits;
mask >>= freeBits;
currentValue &= mask;
// Then fill all the next bytes required to encode the current value,
// except the last one
while( blockSizeLeft > 8 )
{
blockSizeLeft -= 8;
encodedData.append( currentValue >> blockSizeLeft );
mask >>= 8;
currentValue &= mask;
}
// Finally, add the last byte
freeBits = 8 - blockSizeLeft;
encodedData.append( currentValue << freeBits );
}
}
*/
return true;
}
/**
* Decompress data with the Bit Packing Byte algorithm.
*
* @param source Data source where to read the compressed bytes
* @param length Number of items to read
* @param index Index to use for compression
* @param decodedData List where to place decompressed values
* @return bool
*/
bool BitPackingByteAlgorithm::inflate( DataSource* source, quint64 length, quint8 index, QList<qint64>& decodedData )
{
if( index > 24 )
{
qWarning() << "An index of" << index << "is too high!";
index = 24; // Fuck it :P
}
if( source->atEnd() )
{
qWarning() << "Cannot inflate: no more bits available!";
return true;
}
quint8 cBits = BitPackingAlgorithm::bitLookUpTable_[ index ][ CBITS ];
// quint8 cPads = BitPackingAlgorithm::bitLookUpTable_[ index ][ CPADS ];
quint16 count = ( length * 8 / cBits ); // Number of items in the compressed array
bool ok;
quint64 pos = 0;
while( pos++ < count )
{
quint8 byte = source->getBits( cBits, &ok );
if( ! ok )
{
qWarning() << "Decompression failure!";
return false;
}
decodedData.append( byte );
}
return true;
}
@@ -0,0 +1,45 @@
/***************************************************************************
* Copyright (C) 2008 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFCOMPRESSION_BITPACKING_BYTE_H
#define ISFCOMPRESSION_BITPACKING_BYTE_H
#include "../datasource.h"
namespace Isf
{
namespace Compress
{
namespace BitPackingByteAlgorithm
{
quint8 index( const QList<qint64>& data );
bool deflate( QByteArray& encodedData, quint8 index, const QList<qint64>& source );
bool inflate( DataSource* source, quint64 length, quint8 index, QList<qint64>& decodedData );
}
}
}
#endif
@@ -0,0 +1,95 @@
/***************************************************************************
* Copyright (C) 2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFCOMPRESSION_BITPACKING_H
#define ISFCOMPRESSION_BITPACKING_H
#include <QtGlobal>
#define CBITS 0
#define CPADS 1
namespace Isf {
namespace Compress {
namespace BitPackingAlgorithm {
/// Table used to compute the length of bit-packed values and their remainders.
quint8 bitLookUpTable_[ 48 ][ 2 ] =
{
// { cBits, cPads }
{ 8, 0 }, // index 0
{ 1, 0 },
{ 1, 1 },
{ 1, 2 },
{ 1, 3 },
{ 1, 4 },
{ 1, 5 },
{ 1, 6 },
{ 1, 7 },
{ 2, 0 },
{ 2, 1 }, // index 10
{ 2, 2 },
{ 2, 3 },
{ 3, 0 },
{ 3, 1 },
{ 3, 2 },
{ 4, 0 },
{ 4, 1 },
{ 5, 0 },
{ 5, 1 },
{ 6, 0 }, // index 20
{ 6, 1 },
{ 7, 0 },
{ 7, 1 },
{ 8, 0 },
{ 9, 0 },
{ 10, 0 },
{ 11, 0 },
{ 12, 0 },
{ 13, 0 },
{ 14, 0 }, // index 30
{ 15, 0 },
{ 16, 0 },
{ 17, 0 },
{ 18, 0 },
{ 19, 0 },
{ 20, 0 },
{ 21, 0 },
{ 22, 0 },
{ 23, 0 },
{ 24, 0 }, // index 40
{ 25, 0 },
{ 26, 0 },
{ 27, 0 },
{ 28, 0 },
{ 29, 0 },
{ 30, 0 },
{ 31, 0 } // index 47
};
} // Namespace BitPackingAlgorithm
} // Namespace Compress
} // Namespace Isf
#endif
@@ -0,0 +1,78 @@
/***************************************************************************
* Copyright (C) 2008 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "deltatransform.h"
using namespace Isf::Compress;
/**
* Perform a delta-delta transformation on data to be deflated.
*
* @param data Data to transform - the list will be modified.
* @return bool
*/
bool Delta::transform( QList<qint64>& data )
{
qint64 currentDelta = 0;
qint64 previousDelta = 0;
for( qint64 index = 0; index < data.size(); ++index )
{
qint64 currentItem = data[ index ];
data[ index ] = data[ index ] + previousDelta - ( currentDelta * 2 );
previousDelta = currentDelta;
currentDelta = currentItem;
}
return true;
}
/**
* Perform a delta-delta inverse transformation on just-inflated data.
*
* @param data Data to transform - the list will be modified.
* @return bool
*/
bool Delta::inverseTransform( QList<qint64>& data )
{
qint64 currentDelta = 0;
qint64 previousDelta = 0;
for( qint64 index = 0; index < data.size(); ++index )
{
qint64 delta = ( currentDelta * 2 ) - previousDelta + data[ index ];
previousDelta = currentDelta;
currentDelta = delta;
data[ index ] = delta;
}
return true;
}
@@ -0,0 +1,43 @@
/***************************************************************************
* Copyright (C) 2008 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISF_COMPRESS_DELTATRANSFORM_H
#define ISF_COMPRESS_DELTATRANSFORM_H
#include <QList>
namespace Isf
{
namespace Compress
{
namespace Delta
{
bool transform( QList<qint64>& data );
bool inverseTransform( QList<qint64>& data );
}
}
}
#endif
@@ -0,0 +1,284 @@
/***************************************************************************
* Copyright (C) 2008 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "huffman.h"
#include "isfqt-internal.h"
#include <math.h>
#define HUFFMAN_BASES_NUM 8
#define HUFFMAN_BASE_SIZE 11
using namespace Isf::Compress;
/// Bit amounts.
const int bitAmounts_[HUFFMAN_BASES_NUM][HUFFMAN_BASE_SIZE] =
{
{0, 1, 2, 4, 6, 8, 12, 16, 24, 32, -1},
{0, 1, 1, 2, 4, 8, 12, 16, 24, 32, -1},
{0, 1, 1, 1, 2, 4, 8, 14, 22, 32, -1},
{0, 2, 2, 3, 5, 8, 12, 16, 24, 32, -1},
{0, 3, 4, 5, 8, 12, 16, 24, 32, -1, -1},
{0, 4, 6, 8, 12, 16, 24, 32, -1, -1, -1},
{0, 6, 8, 12, 16, 24, 32, -1, -1, -1, -1},
{0, 7, 8, 12, 16, 24, 32, -1, -1, -1, -1},
};
/// Huffman codec value bases.
const int huffmanBases_[HUFFMAN_BASES_NUM][HUFFMAN_BASE_SIZE] =
{
{0, 1, 2, 4, 12, 44, 172, 2220, 34988, 8423596, -1},
{0, 1, 2, 3, 5, 13, 141, 2189, 34957, 8423565, -1},
{0, 1, 2, 3, 4, 6, 14, 142, 8334, 2105486, -1},
{0, 1, 3, 5, 9, 25, 153, 2201, 34969, 8423577, -1},
{0, 1, 5, 13, 29, 157, 2205, 34973, 8423581, -1, -1},
{0, 1, 9, 41, 169, 2217, 34985, 8423593, -1, -1, -1},
{0, 1, 33, 161, 2209, 34977, 8423585, -1, -1, -1, -1},
{0, 1, 65, 193, 2241, 35009, 8423617, -1, -1, -1, -1},
};
/**
* Get the most appropriate index for the given data.
*
* @param data Data to analyze
* @return index value
*/
quint8 HuffmanAlgorithm::index( const QList<qint64>& data )
{
quint8 index = 0;
// TODO: Find out what the Huffman index algorithm is
Q_UNUSED( data )
index = 2;
return index;
}
/**
* Compress data with the Huffman algorithm.
*
* @param encodedData Byte array where to store the compressed data
* @param index Index to use for compression
* @param source List of values to compress
* @return bool
*/
bool HuffmanAlgorithm::deflate( QByteArray& encodedData, quint8 index, const QList<qint64>& source )
{
DataSource output( encodedData );
output.skipToNextByte();
foreach( quint64 value, source )
{
if( ! deflateValue( &output, index, value ) )
{
#ifdef ISFQT_DEBUG
qDebug() << "Deflating failure for value:" << value;
#endif
return false;
}
}
// Flush any leftover bit to the byte array
output.flush();
encodedData = output.data();
return true;
}
/**
* Compress a single value with the Huffman algorithm.
*
* @param output Data source where to store the compressed value
* @param index Index to use for compression
* @param value Value to compress
* @return bool
*/
bool HuffmanAlgorithm::deflateValue( DataSource* output, quint8 index, qint64 value )
{
qint64 temp = value;
quint8 requiredBits = 0;
QBitArray valueBits;
// Fill in a bitAmounts local vector
QVector<int> bitAmounts;
for( int i = 0; i < HUFFMAN_BASE_SIZE; ++i )
{
if( bitAmounts_[ index ][ i ] == -1 )
{
break;
}
bitAmounts.append( bitAmounts_[ index ][ i ] );
}
// Find the number of bits needed to store this value
while( temp )
{
temp /= 2;
++requiredBits;
}
while( ! bitAmounts.count( requiredBits ) )
{
++requiredBits;
}
qint64 offset = ( value < 0 ) ? -value : +value;
quint8 prefixLength;
for( prefixLength = 1;
( prefixLength < HUFFMAN_BASE_SIZE ) && ( offset >= huffmanBases_[ index ][ prefixLength ] ); prefixLength++ )
{
// Empty loop on purpose
}
// Write prefixLength 1s to the stream, then a 0
QBitArray bits( prefixLength );
bits.fill( true );
bits.clearBit( bits.size() - 1 );
// Write the number using the minimum possible number of bits
qint32 size = bitAmounts_[ index ][ prefixLength - 1 ];
qint64 mask = ( 1 << ( size - 1 ) ) - 1;
valueBits.resize( size );
offset = ( offset - huffmanBases_[ index ][ prefixLength - 1 ] ) & mask;
offset <<= 1;
offset |= ( value < 0 ) ? 1 : 0;
// Copy the resulting offset
for( qint64 i = 0; i < size; ++i )
{
valueBits.setBit( i, offset & ( 1 << ( size - i - 1 ) ) );
}
// Add the bits to the data source
output->append( bits );
output->append( valueBits );
return true;
}
/**
* Decompress data with the Huffman algorithm.
*
* @param source Data source where to read the compressed bytes
* @param length Number of items to read
* @param index Index to use for compression
* @param decodedData List where to place decompressed values
* @return bool
*/
bool HuffmanAlgorithm::inflate( DataSource* source, quint64 length, quint8 index, QList<qint64>& decodedData )
{
QVector<int> huffmanBases;
QVector<int> bitAmounts( HUFFMAN_BASE_SIZE );
// Initialize the bit amounts vector
memcpy( bitAmounts.data(), bitAmounts_[ index ], sizeof(int)*HUFFMAN_BASE_SIZE );
int base = 1;
huffmanBases.append( 0 );
// Fill up the huffman bases vector
for( quint8 i = 0; i < bitAmounts.size(); ++i )
{
int value = bitAmounts[ i ];
// The bit amounts sequence ends in -1
if( value == -1 )
{
bitAmounts.resize( i );
break;
}
if( value == 0 )
{
continue;
}
huffmanBases.append( base );
base += pow( 2, value - 1 );
}
quint32 count = 0;
qint64 value = 0;
bool bit;
while( (uint)decodedData.length() < length )
{
bit = source->getBit();
if( bit )
{
count++;
continue;
}
if( count == 0 )
{
value = 0;
}
else if( count < (uint)bitAmounts.size() )
{
quint64 offset = source->getBits( bitAmounts[ count ] );
bool sign = offset & 0x1;
offset /= 2;
value = huffmanBases[ count ] + offset;
value *= ( sign ? -1 : +1 );
}
else if( count == (uint)bitAmounts.size() )
{
// TODO: Implement 64-bit data decompression :)
#ifdef ISFQT_DEBUG
qDebug() << "Unsupported 64-bit value found!";
#endif
value = 0;
}
else
{
#ifdef ISFQT_DEBUG
qDebug() << "Decompression error!";
#endif
value = 0;
}
decodedData.append( value );
count = 0;
}
return true;
}
@@ -0,0 +1,49 @@
/***************************************************************************
* Copyright (C) 2008 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFCOMPRESSION_HUFFMAN_H
#define ISFCOMPRESSION_HUFFMAN_H
#include "../datasource.h"
namespace Isf
{
namespace Compress
{
namespace HuffmanAlgorithm
{
bool deflate( QByteArray& encodedData, quint8 index, const QList<qint64>& source );
bool inflate( DataSource* source, quint64 length, quint8 index, QList<qint64>& decodedData );
quint8 index( const QList<qint64>& data );
// Internal use methods
bool deflateValue( DataSource* output, quint8 index, qint64 value );
}
}
}
#endif
+421
View File
@@ -0,0 +1,421 @@
/***************************************************************************
* Copyright (C) 2008 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "compression.h"
#include "isfqt-internal.h"
#include "algorithms/bitpacking.h"
#include "algorithms/bitpacking_byte.h"
#include "algorithms/huffman.h"
#include "algorithms/deltatransform.h"
using namespace Isf;
/**
* Decompress packet data.
*
* The algorithm to use for the decompression is autodetected using
* the so-called "algorithm byte" within the compressed data.
*
* @param source Data Source where to read compressed bytes from
* @param length Number of items to decompress
* @param decodedData List where to store the decoded values
* @return bool
*/
bool Compress::inflatePacketData( DataSource* source, quint64 length, QList<qint64>& decodedData )
{
if( source->atEnd() )
{
#ifdef ISFQT_DEBUG
qWarning() << "Source was at end!";
#endif
return false;
}
bool result = false;
uchar byte = source->getByte();
qint16 algorithm = ( byte & AlgorithmMask );
quint8 algorithmData = 0;
// Detect which algorithm to use
// Use the "best compression" algorithm
if( ( algorithm & BestCompression ) == BestCompression )
{
/* TODO: Not implemented yet. We don't know how ISF actually works here.
* According to the specs, both bit packing and Huffman may be used; but
* where are the rest of the bits stored? In the next byte?
* We need an ISF stream with such a characteristic to be sure.
*/
qWarning() << "Unknown decompression method!";
qDebug() << "[Information - type: best, byte:" << QString::number( source->getByte(), 16 ) << "hex]";
return false;
}
// Use the "default compression" algorithm, which is Huffman
else if( ( algorithm & DefaultCompression ) == DefaultCompression
|| ( algorithm & Huffman ) == Huffman )
{
algorithm = Huffman;
algorithmData = ( HuffmanMask & byte );
}
// According to the specs, the only other algorithm for packet data
// is generic bit packing.
else if( algorithm == BitPacking )
{
algorithm = BitPacking;
algorithmData = ( BitPackingMask & byte );
}
else
{
// Unknown algorithm. Throw an error below.
algorithm = -1;
}
// Apply the inflation algorithm
switch( algorithm )
{
case BitPacking:
{
// Detect if the data is encoded with delta-delta transformation
bool requiresDeltaDeltaTransform = ( BitPackingTransformMask & byte );
if( requiresDeltaDeltaTransform )
{
algorithmData ^= BitPackingTransformMask;
}
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Inflating" << length << "items using the Bit Packing algorithm and a block size of" << algorithmData;
#endif
result = BitPackingAlgorithm::inflate( source, length, algorithmData, decodedData );
if( result && requiresDeltaDeltaTransform )
{
result = Delta::inverseTransform( decodedData );
}
break;
}
case Huffman:
{
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Inflating" << length << "items using the Huffman algorithm and index" << algorithmData;
#endif
result = HuffmanAlgorithm::inflate( source, length, algorithmData, decodedData );
// Always delta-inverse-transform data compressed with Huffman
if( result )
{
result = Delta::inverseTransform( decodedData );
}
break;
}
default:
qWarning() << "Unknown decompression method!";
qDebug() << "[Information - type: unknown, byte:" << QString::number( byte, 16 ) << "hex]";
// Go back to the previous read position
source->seekRelative( -1 );
break;
}
// Discard any partially read bytes
if( ! source->atEnd() )
{
source->skipToNextByte();
}
return result;
}
/**
* Compress packet data.
*
* The algorithm to use for the decompression is autodetected
* by analyzing the data.
*
* @param encodedData Byte Array where to store the encoded data
* @param source List of values to compress
* @return bool
*/
bool Compress::deflatePacketData( QByteArray& encodedData, const QList<qint64>& source )
{
bool result;
// TODO Is this really how to detect the algorithm to use?
int algorithm;
if( source.count() == 1 )
{
algorithm = BitPacking;
}
else
{
algorithm = Huffman;
}
switch( algorithm )
{
case BitPacking:
{
quint8 blockSize = BitPackingAlgorithm::blockSize( source );
// Write the data encoding algorithm and block size
encodedData.append( blockSize | BitPacking );
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Deflating" << source.count() << "items using the bit packing algorithm and a block size of" << blockSize;
#endif
// Deflate the data
result = BitPackingAlgorithm::deflate( encodedData, blockSize, source );
break;
}
case Huffman:
{
quint8 index = HuffmanAlgorithm::index( source );
// Write the data encoding algorithm and index
encodedData.append( index | Huffman );
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Deflating" << source.count() << "items using the Huffman algorithm and index" << index;
#endif
// Deflate the data
QList<qint64> list( source );
result = Delta::transform( list );
if( result )
{
result = HuffmanAlgorithm::deflate( encodedData, index, list );
}
break;
}
default:
#ifdef ISFQT_DEBUG
qDebug() << "Encoding algorithm not implemented! (algorithm:" << QString::number( algorithm, 16 ) << ")";
#endif
break;
}
return result;
}
/**
* Decompress property data.
*
* The algorithm to use for the decompression is autodetected using
* the so-called "algorithm byte" within the compressed data.
*
* @param source Data Source where to read compressed bytes from
* @param length Number of items to decompress
* @param decodedData List where to store the decoded values
* @return bool
*/
bool Compress::inflatePropertyData( DataSource* source, quint64 length, QList<qint64>& decodedData )
{
if( source->atEnd() )
{
#ifdef ISFQT_DEBUG
qWarning() << "Source was at end!";
#endif
return false;
}
bool result;
quint8 byte = source->getByte();
qint16 algorithm = ( byte & AlgorithmMask );
quint8 algorithmData = 0;
// Detect which algorithm to use
// Use the "default compression" algorithm
if( ( algorithm & DefaultCompression ) == DefaultCompression )
{
/* TODO: Not implemented yet. We don't know how ISF actually works here.
* According to the specs, any of the 3 bit packing techniques may be used;
* but where are the rest of the bits stored? In the next byte?
* We need an ISF stream with such a characteristic to be sure.
*/
qWarning() << "Unknown decompression method!";
qDebug() << "[Information - type: default, byte:" << QString::number( source->getByte(), 16 ) << "hex]";
return false;
}
// Use the "best compression" algorithm, which is Huffman
else if( ( algorithm & BestCompression ) == BestCompression
|| ( algorithm & Huffman ) == Huffman )
{
algorithm = Huffman;
algorithmData = ( HuffmanMask & byte );
}
else if( ( algorithm & LimpelZiv ) == LimpelZiv )
{
algorithm = LimpelZiv;
}
else if( ( algorithm & BitPackingByte ) == BitPackingByte )
{
algorithm = BitPackingByte;
algorithmData = ( BitPackingByteMask & byte );
}
else if( ( algorithm & BitPackingWord ) == BitPackingWord )
{
algorithm = BitPackingWord;
algorithmData = ( BitPackingWordMask & byte );
}
else if( ( algorithm & BitPackingLong ) == BitPackingLong )
{
algorithm = BitPackingLong;
algorithmData = ( BitPackingLongMask & byte );
}
else
{
// Unknown algorithm. Throw an error below.
algorithm = -1;
}
// Apply the deflation algorithm
switch( algorithm )
{
case BitPackingByte:
{
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Inflating" << length << "bytes using the Bit Packing Byte algorithm and an index of" << algorithmData;
#endif
result = BitPackingByteAlgorithm::inflate( source, length, algorithmData, decodedData );
break;
}
case BitPackingWord:
{
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Inflating" << length << "bytes using the Bit Packing Word algorithm and an index of" << algorithmData;
#endif
qWarning() << "Stream data is compressed with non implemented algorithm!";
qDebug() << "[Information - algorithm: Bit Packing Word]";
return false;
break;
}
case BitPackingLong:
{
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Inflating" << length << "bytes using the Bit Packing Long algorithm and an index of" << algorithmData;
#endif
qWarning() << "Stream data is compressed with non implemented algorithm!";
qDebug() << "[Information - algorithm: Bit Packing Long]";
return false;
break;
}
case LimpelZiv:
{
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Inflating" << length << "items using the Limpel-Ziv algorithm and a block size of" << algorithmData;
#endif
qWarning() << "Stream data is compressed with non implemented algorithm!";
qDebug() << "[Information - algorithm: Limpel-Ziv]";
return false;
break;
}
case Huffman:
{
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Inflating" << length << "items using the Huffman algorithm and index" << algorithmData;
#endif
result = HuffmanAlgorithm::inflate( source, length, algorithmData, decodedData );
// Always delta-inverse-transform data compressed with Huffman
if( result )
{
result = Delta::inverseTransform( decodedData );
}
break;
}
default:
qWarning() << "Unknown decompression method!";
qDebug() << "[Information - type: unknown, byte:" << QString::number( byte, 16 ) << "hex]";
// Go back to the previous read position
source->seekRelative( -1 );
break;
}
// Discard any partially read bytes
if( ! source->atEnd() )
{
source->skipToNextByte();
}
return result;
}
/**
* Compress property data.
*
* The algorithm to use for the decompression is autodetected
* by analyzing the data.
*
* @todo Implement!
* @param encodedData Byte Array where to store the encoded data
* @param source List of values to compress
* @return bool
*/
bool Compress::deflatePropertyData( QByteArray& encodedData, const QList<qint64>& source )
{
Q_UNUSED( encodedData );
Q_UNUSED( source );
bool result = false;
qWarning() << "Property data saving is not implemented at the moment!";
return result;
}
+126
View File
@@ -0,0 +1,126 @@
/***************************************************************************
* Copyright (C) 2008 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFCOMPRESSION_H
#define ISFCOMPRESSION_H
#include "datasource.h"
namespace Isf
{
namespace Compress
{
/**
* Algorithm extra data masks.
*
* These masks are used to obtain the least significant bits which
* are useful for the specific algorithm. If an algo takes no
* useful bits, the mask is 0.
*/
enum AlgorithmMasks
{
AlgorithmMask = 0xF0 ///< Mask used to identify the algorithms
, BitPackingMask = 0x3F ///< Mask for bit packing of arbitrary-sized integers
, BitPackingTransformMask = 0x20 ///< Mask for delta-delta transformed bit packed data
, HuffmanMask = 0x3F ///< Mask for Huffman
, BitPackingLongMask = 0x3F ///< Mask for bit packing of 32bit signed integers
, BitPackingWordMask = 0x1F ///< Mask for bit packing of 16bit unsigned integers
, BitPackingByteMask = 0x1F ///< Mask for bit packing of 8bit unsigned integers
, LimpelZivMask = 0x00 ///< Mask for Limpel-Ziv
, BestCompressionMask = 0x00 ///< Mask for the best compression algo
, DefaultCompressionMask = 0x00 ///< Mask for the default compression algo
};
/**
* Compression and decompressions algorithms.
*
* Bit assignment table for packets (strokes):
* ---------------------------
* | Algorithm | 7 6 5 4 3 2 1 0 (Bit assignment) |
* Bit packing 0 0 D D D D D D
* Huffman 1 0 D D D D D D
* Default compression 1 1 0 0 X X X X
* Best compression 1 1 1 1 X X X X
*
* Bit assignment table for properties (tags):
* ---------------------------
* | Algorithm | 7 6 5 4 3 2 1 0 (Bit assignment) |
* Bit packing of bytes 0 0 0 D D D D D
* Bit packing of words 0 0 1 D D D D D
* Bit packing of longs 0 1 D D D D D D
* Limpel-Ziv 1 0 1 0 X X X X
* Default compression 1 1 0 0 X X X X
* Best compression 1 1 1 1 X X X X
*
* D = Algorithm-specific data
* X = Ignored bit
*
* We use the two most significant bits to identify the algorithms,
* because they are guaranteed to not contain algorithm data.
*
* Also, note that these tables are not identical to the ones in the
* specs: we changed them because they differ from our factual
* observations (in the specs Huffman is missing, for example).
*/
enum CommonDataAlgorithms
{
BestCompression = 0xF0 ///< Best compression algorithm
, DefaultCompression = 0xC0 ///< Default compression algorithm (Huffman)
, Huffman = 0x80 ///< Huffman encoding
};
/**
* Compression and decompressions algorithms.
*
* @see CommonDataAlgorithms
*/
enum PacketDataAlgorithms
{
BitPacking = 0x00 ///< Bit packing
};
/**
* Compression and decompressions algorithms.
*
* @see CommonDataAlgorithms
*/
enum PropertyDataAlgorithms
{
LimpelZiv = 0xA0 ///< Limpel-Ziv compressionrs
, BitPackingLong = 0x40 ///< Bit packing of 32bit signed integers
, BitPackingWord = 0x20 ///< Bit packing of 16bit unsigned integers
, BitPackingByte = 0x00 ///< Bit packing of 8bit unsigned integers
};
bool inflatePacketData( DataSource* source, quint64 length, QList<qint64>& decodedData );
bool deflatePacketData( QByteArray& destination, const QList<qint64>& decodedData );
bool inflatePropertyData( DataSource* source, quint64 length, QList<qint64>& decodedData );
bool deflatePropertyData( QByteArray& destination, const QList<qint64>& decodedData );
}
}
#endif
+720
View File
@@ -0,0 +1,720 @@
/***************************************************************************
* Copyright (C) 2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* Copyright (C) 2009 by Adam Goossens *
* adam@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "datasource.h"
#include "isfqt-internal.h"
using namespace Isf;
using namespace Isf::Compress;
/**
* Empty constructor.
*/
DataSource::DataSource()
: currentBitIndex_( 8 ) // Invalid position in the current byte
{
buffer_.open( QBuffer::ReadWrite );
currentByte_.resize( 8 );
}
/**
* Constructor.
*
* @param data Byte array to copy and use as data source
*/
DataSource::DataSource( const QByteArray& data )
: currentBitIndex_( 8 )
{
buffer_.setData( data );
buffer_.open( QBuffer::ReadWrite );
buffer_.seek( 0 );
currentByte_.resize( 8 );
// Move the first byte of data in the bit array
moveByteToBitArray();
}
/**
* Destructor.
*/
DataSource::~DataSource()
{
}
/**
* Insert a byte at the end of the data.
*
* @param byte The byte to append
*/
void DataSource::append( char byte )
{
bool wasEmpty = ( buffer_.size() == 0 );
if( ! wasEmpty )
{
buffer_.seek( buffer_.size() );
}
if( buffer_.write( &byte, 1 ) != 1 )
{
qWarning() << "DataSource::append() - Write failed at buffer position" << buffer_.pos();
return;
}
// Prepare the first byte to be read
if( wasEmpty )
{
currentBitIndex_ = 8;
}
}
/**
* Insert bits at the end of the data.
*
* @param constBits The list of bits to append
*/
void DataSource::append( const QBitArray& constBits )
{
if( constBits.size() == 0 )
{
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "Not writing an empty bit array, skipping.";
#endif
return;
}
if( buffer_.size() != 0 )
{
buffer_.seek( buffer_.size() );
}
quint8 initialPos = 0;
quint8 size = constBits.size();
// If there are unwritten bits, add them to the input bit array
if( currentBitIndex_ != 8 )
{
size += currentBitIndex_;
}
QBitArray bits( size );
// Copy on the input bit array the current byte then the input bits
if( currentBitIndex_ != 8 )
{
initialPos = currentBitIndex_;
for( quint8 idx = 0; idx < currentBitIndex_; ++idx )
{
bits[ idx ] = currentByte_[ idx ];
}
}
for( quint8 idx = 0; idx < constBits.size(); ++idx )
{
bits[ idx + initialPos ] = constBits[ idx ];
}
quint8 bit = 7;
quint8 byte = 0;
QByteArray bytes;
quint8 byteWiseSize = bits.size() - ( bits.size() % 8 );
// Skip writing if there are no full bytes
if( byteWiseSize != 0 )
{
for( quint8 idx = 0; idx < byteWiseSize; ++idx )
{
byte |= bits[ idx ] << bit;
// A byte was filled, push it to the bytearray
if( bit-- == 0 )
{
bytes.append( byte );
bit = 7;
byte = 0;
}
}
// Write the bytes in the buffer
if( bytes.size() > 0 && buffer_.write( bytes ) != bytes.size() )
{
qWarning() << "DataSource::append() - Write failed at buffer position" << buffer_.pos();
return;
}
}
// Move any remaining bits to the current byte
quint8 remainingBitSize = ( bits.size() - byteWiseSize );
if( remainingBitSize > 0 )
{
for( currentBitIndex_ = 0; currentBitIndex_ < remainingBitSize; ++currentBitIndex_ )
{
currentByte_[ currentBitIndex_ ] = bits[ currentBitIndex_ + byteWiseSize ];
}
}
else
{
currentByte_.clear();
currentByte_.resize( 8 );
currentBitIndex_ = 8;
}
}
/**
* Insert bytes at the end of the data.
*
* @param bytes The bytes to append
*/
void DataSource::append( const QByteArray& bytes )
{
bool wasEmpty = ( buffer_.size() == 0 );
if( ! wasEmpty )
{
buffer_.seek( buffer_.size() );
}
if( buffer_.write( bytes ) != bytes.size() )
{
qWarning() << "DataSource::append() - Write of" << bytes.size() << "bytes failed at buffer position" << buffer_.pos();
return;
}
// Prepare the first byte to be read
if( wasEmpty )
{
currentBitIndex_ = 8;
}
}
/**
* Get whether the buffer is finished.
*
* The buffer is finished (at the end) when there are no more
* bytes to read. If the considerBits parameter is set, the
* buffer is considered finished when all the bits have been
* read.
*
* @param considerBits Whether to consider the data source as a bits source
* @return bool
*/
bool DataSource::atEnd( bool considerBits ) const
{
if( considerBits )
{
// There's no more data only when both the buffer AND all the bits
// have been read
return buffer_.atEnd() && ( currentBitIndex_ >= 8 );
}
return buffer_.atEnd();
}
/**
* Clear the data buffer.
*/
void DataSource::clear()
{
buffer_.close();
buffer_.setData( QByteArray() );
buffer_.open( QIODevice::ReadWrite );
buffer_.seek( 0 );
currentBitIndex_ = 8;
currentByte_.clear();
currentByte_.resize( 8 );
}
/**
* Return a reference to the internal data array.
*
* @return byte array
*/
const QByteArray& DataSource::data() const
{
return buffer_.data();
}
/**
* Flush the current byte to the buffer.
*
* When in bit mode, this method can be used to save less than 8 bits
* in the stream. The unsed bits are set to 0.
*/
void DataSource::flush()
{
if( currentBitIndex_ >= 8 )
{
return;
}
quint8 bit = 7;
quint8 byte = 0;
for( quint8 index = 0; index < currentBitIndex_; ++index )
{
byte |= currentByte_[ index ] << bit--;
}
// Write the bytes in the buffer
if( buffer_.write( (char*)&byte, 1 ) != 1 )
{
qWarning() << "DataSource::flush() - Write failed at buffer position" << buffer_.pos();
}
}
/**
* Retrieve the index of the current bit.
*
* @return Current position within the byte we're reading at the moment
*/
quint8 DataSource::getBitIndex()
{
return currentBitIndex_;
}
/**
* Retrieve the next bit from the data.
*
* @param ok If set, it will contain whether the call was successful or not.
* @return bool
*/
bool DataSource::getBit( bool* ok )
{
if( currentBitIndex_ >= 8 )
{
// Also check the index again, in case somehow moveByteToBitArray()
// fails to move the bit index
if( ( ! moveByteToBitArray() ) || currentBitIndex_ >= 8 )
{
if( ok != 0 )
{
*ok = false;
}
return false;
}
Q_ASSERT( currentBitIndex_ == 0 );
}
Q_ASSERT( currentByte_.size() == 8 );
if( ok != 0 )
{
*ok = true;
}
++currentBitIndex_;
return currentByte_.at( currentBitIndex_ - 1 );
}
/**
* Retrieve the next [amount] bits from the data.
*
* @param amount Number of bits to read
* @param ok If set, it will contain whether the call was successful or not.
* @return quint64 with the set of read bits
*/
quint64 DataSource::getBits( quint8 amount, bool* ok )
{
if( amount > 64 )
{
qWarning() << "DataSource:getBits() - Cannot retrieve" << amount << "bits, the maximum is 64 bits!";
if( ok != 0 )
{
*ok = false;
}
return 0LL;
}
bool gotBitOk = false;
quint8 bitIndex = 0;
quint64 value = 0;
while( ! atEnd( true ) && bitIndex < amount )
{
bool bit = getBit( &gotBitOk );
if( ! gotBitOk )
{
if( ok != 0 )
{
*ok = false;
}
return 0LL;
}
if( bit )
{
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
value |= 1 << bitIndex;
#else
value |= 1 << ( amount - bitIndex - 1 );
#endif
}
++bitIndex;
}
// If more bits must be read, but are not available, abort
#ifdef ISFQT_DEBUG_VERBOSE
if( ( bitIndex < amount ) && atEnd( true ) )
{
qDebug() << "Unable to read all bits: only" << bitIndex << "of" << amount << "were available.";
}
#endif
// Done!
if( ok != 0 )
{
*ok = true;
}
return value;
}
/**
* Retrieve the next byte from the data
*
* @param ok If set, it will contain whether the call was successful or not.
* @return char
*/
char DataSource::getByte( bool* ok )
{
bool gotBitOk;
quint8 pos = 0;
qint8 byte = 0;
while( pos < 8 )
{
bool bit = getBit( &gotBitOk );
if( ! gotBitOk )
{
if( ok != 0 )
{
*ok = false;
}
return 0;
}
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
byte |= ( bit << pos++ );
#else
byte |= ( bit << ( 7 - pos++ ) );
#endif
}
// Done!
if( ok != 0 )
{
*ok = true;
}
return byte;
}
/**
* Retrieve the next [amount] bytes from the data.
*
* @param amount Number of bytes to read
* @param ok If set, it will contain whether the call was successful or not.
* @return byte array of read bytes
*/
QByteArray DataSource::getBytes( quint8 amount, bool* ok )
{
QByteArray bytes;
bool gotByteOk;
quint8 index = 0;
while( ! atEnd() && index < amount )
{
quint8 byte = getByte( &gotByteOk );
if( ! gotByteOk )
{
if( ok != 0 )
{
*ok = false;
}
return QByteArray();
}
bytes.append( byte );
++index;
}
// Done!
if( ok != 0 )
{
*ok = true;
}
return bytes;
}
/**
* Move a byte from the buffer into the 'current byte' bit array.
*
* @return bool
*/
bool DataSource::moveByteToBitArray()
{
quint8 byte = 0;
if( buffer_.size() == 0 )
{
qWarning() << "DataSource:moveByteToBitArray() - The buffer is empty!";
currentByte_.clear();
currentBitIndex_ = 8;
return false;
}
if( buffer_.atEnd() )
{
qWarning() << "DataSource:moveByteToBitArray() - The buffer was completely parsed!";
currentByte_.clear();
currentBitIndex_ = 8;
return false;
}
if( buffer_.getChar( (char*)&byte ) != 1 )
{
qWarning() << "DataSource::moveByteToBitArray() - Read failed at buffer position" << buffer_.pos();
return false;
}
for( qint8 i = 0; i < 8; i++ )
{
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
currentByte_.setBit( i, byte & ( 1 << i ) );
#else
currentByte_.setBit( 7 - i, byte & ( 1 << i ) );
#endif
}
currentBitIndex_ = 0;
return true;
}
/**
* Get the current position within the internal data buffer.
*
* @return qint64
*/
qint64 DataSource::pos() const
{
return buffer_.pos();
}
/**
* Insert a byte at the beginning of the data.
*
* @param byte Byte to add
*/
void DataSource::prepend( char byte )
{
buffer_.buffer().prepend( byte );
bool wasAtBeginning = ( buffer_.pos() == 0 );
seekRelative( 1 );
if( wasAtBeginning )
{
moveByteToBitArray();
}
}
/**
* Insert bytes at the beginning of the data.
*
* @param bytes Bytes to add
*/
void DataSource::prepend( const QByteArray& bytes )
{
buffer_.buffer().prepend( bytes );
bool wasAtBeginning = ( buffer_.pos() == 0 );
seekRelative( bytes.size() );
if( wasAtBeginning )
{
moveByteToBitArray();
}
}
//
/**
* Return to the start of the buffer.
*/
void DataSource::reset()
{
buffer_.reset();
currentBitIndex_ = 8;
}
//
/**
* Seek back and forth in the stream.
*
* A negative pos will move backwards within the stream.
*
* @param pos Relative position where to move
*/
void DataSource::seekRelative( int pos )
{
if( pos < 0 && buffer_.pos() <= 0 )
{
#ifdef ISFQT_DEBUG_VERBOSE
qWarning() << "Cannot seek back!";
#endif
return;
}
if( pos > 0 && ( buffer_.size() - buffer_.pos() ) < pos )
{
#ifdef ISFQT_DEBUG_VERBOSE
qWarning() << "Cannot seek forward!";
#endif
return;
}
buffer_.seek( buffer_.pos() + pos );
}
/**
* Replace the data byte array with another.
*
* @param data New array to copy and use as the data source
*/
void DataSource::setData( const QByteArray& data )
{
buffer_.close();
buffer_.setData( data );
buffer_.open( QIODevice::ReadWrite );
buffer_.seek( 0 );
currentBitIndex_ = 8;
}
/**
* Skip the rest of the current byte and read the next one.
*
* When using the data source in bit mode, this skips the
* bits remaining in the current byte and prepares to read
* the next byte.
*/
void DataSource::skipToNextByte()
{
if( currentBitIndex_ == 0 )
{
return;
}
moveByteToBitArray();
}
/**
* Skip the rest of the current byte and read the previous one.
*
* When using the data source in bit mode, this skips the
* bits remaining in the current byte and prepares to read
* the next byte.
*/
void DataSource::skipToPrevByte()
{
currentBitIndex_ = 8;
}
//
/**
* Get the size of the data.
*
* @return qint64
*/
qint64 DataSource::size() const
{
return buffer_.size();
}
+98
View File
@@ -0,0 +1,98 @@
/***************************************************************************
* Copyright (C) 2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* Copyright (C) 2009 by Adam Goossens *
* adam@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef DATASOURCE_H
#define DATASOURCE_H
#include <QBitArray>
#include <QBuffer>
namespace Isf
{
namespace Compress
{
/**
* @class DataSource
* @brief Class to handle a QBuffer at the bit level.
*
* You can use this class in two ways: first, reading and writing bytes
* normally. Second, reading and writing individual bits.
*
* Warning: Mixing up the usage modes is not very well tested!
*/
class DataSource
{
public: // Public constructors
DataSource();
DataSource( const QByteArray& data );
~DataSource();
public: // Public status retrieval methods
bool atEnd( bool considerBits = false ) const;
const QByteArray& data() const;
qint64 pos() const;
qint64 size() const;
public: // Public data manipulation methods
void append( char byte );
void append( const QBitArray& bits );
void append( const QByteArray& bytes );
void clear();
void flush();
bool getBit( bool* ok = 0 );
quint64 getBits( quint8 amount, bool* ok = 0 );
quint8 getBitIndex();
char getByte( bool* ok = 0 );
QByteArray getBytes( quint8 amount, bool* ok = 0 );
void prepend( char byte );
void prepend( const QByteArray& bytes );
void reset();
void setData( const QByteArray& data );
void seekRelative( int pos );
void skipToNextByte();
void skipToPrevByte();
private: // Private methods
bool moveByteToBitArray();
private: // Private properties
/// Main data buffer
QBuffer buffer_;
/// Current bit within the bit array
quint8 currentBitIndex_;
/// Current byte
QBitArray currentByte_;
};
}
}
#endif
+356
View File
@@ -0,0 +1,356 @@
/***************************************************************************
* Copyright (C) 2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* Copyright (C) 2009 by Adam Goossens *
* adam@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "multibytecoding.h"
#include "isfqt-internal.h"
#include <math.h>
using namespace Isf;
/**
* Decodes an unsigned integer into a quint64 using multibyte decoding.
*
* @param source Data Source where to read bytes from
* @return quint64
*/
quint64 Compress::decodeUInt( DataSource* source )
{
quint8 byte; // Current byte
quint8 flag; // Used to find out if there are more bytes to convert
quint8 count = 0; // Count of bits read so far
quint64 value = 0; // Destination 64-bit value
do
{
byte = source->getByte();
flag = byte & 0x80;
value |= (byte & 0x7F) << count;
count += 7;
}
while( flag );
return value;
}
/**
* Decodes a signed integer into a qint64 using multibyte decoding.
*
* @param source Data Source where to read bytes from
* @return qint64
*/
qint64 Compress::decodeInt( DataSource* source )
{
bool isNegative = false;
qint64 value = decodeUInt( source );
// The least significant bit contains the sign
if( value & 0x01 )
{
isNegative = true;
}
// Remove the sign bit from the raw value
value >>= 1;
// Apply the sign
if( isNegative )
{
value *= -1;
}
return value;
}
/**
* Decodes a float using multibyte decoding.
*
* @param source Data Source where to read bytes from
* @return float
*/
float Compress::decodeFloat( DataSource* source )
{
qint8 index;
// Union used to decode the float transparently
union
{
float value;
uchar bytes[4];
} data;
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
index = 3;
do
{
data.bytes[ index-- ] = source->getByte();
}
while( index >= 0 );
#else
index = 0;
do
{
data.bytes[ index++ ] = source->getByte();
}
while( index <= 3 );
#endif
return data.value;
}
/**
* Encodes an unsigned 64-bit integer into a byte array using multibyte encoding.
*
* @param value The value to encode
* @return byte array
*/
QByteArray Compress::encodeUInt( quint64 value )
{
quint8 byte;
quint8 flag;
QByteArray result;
do
{
byte = value & 0x7F;
value >>= 7;
flag = ( value == 0 ) ? 0 : 0x80;
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
result.prepend( byte | flag );
#else
result.append( byte | flag );
#endif
}
while( flag );
return result;
}
/**
* Encodes an unsigned 64-bit integer into the Data Source using multibyte encoding.
*
* @param source The data source
* @param value The value to encode
* @param prepend False (default value) to append the encoded value to the existing data
* True to prepend the new value to the existing data
*/
void Compress::encodeUInt( DataSource* source, quint64 value, bool prepend )
{
QByteArray result( encodeUInt( value ) );
if( prepend )
{
source->prepend( result );
}
else
{
source->append( result );
}
}
/**
* Encodes a signed 64-bit integer into a byte array using multibyte encoding.
*
* @param value The value to encode
* @return byte array
*/
QByteArray Compress::encodeInt( qint64 value )
{
bool isNegative = ( value < 0 );
if ( isNegative ) value *= -1;
value = value << 1;
QByteArray result( encodeUInt( value ) );
if ( isNegative )
{
int pos;
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
pos = result.size() - 1;
#else
pos = 0;
#endif
result[ pos ] = result[ pos ] | 0x1;
}
return result;
}
/**
* Encodes a signed 64-bit integer into the Data Source using multibyte encoding.
*
* @param source The data source
* @param value The value to encode
* @param prepend False (default value) to append the encoded value to the existing data
* True to prepend the new value to the existing data
*/
void Compress::encodeInt( DataSource* source, qint64 value, bool prepend )
{
QByteArray result( encodeInt( value ) );
if( prepend )
{
source->prepend( result );
}
else
{
source->append( result );
}
}
/**
* Encodes a floating-point value into a byte array using multibyte encoding.
*
* @param value The value to encode
* @return byte array
*/
QByteArray Compress::encodeFloat( float value )
{
qint8 index;
QByteArray result;
// Union used to encode the float transparently
union
{
float number;
uchar bytes[4];
} data;
data.number = value;
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
index = 3;
do
{
result.append( data.bytes[ index-- ] );
}
while( index >= 0 );
#else
index = 0;
do
{
result.append( data.bytes[ index++ ] );
}
while( index <= 3 );
#endif
return result;
}
/**
* Encodes a floating-point value into the Data Source using multibyte encoding.
*
* @param source The data source
* @param value The value to encode
* @param prepend False (default value) to append the encoded value to the existing data
* True to prepend the new value to the existing data
*/
void Compress::encodeFloat( DataSource* source, float value, bool prepend )
{
QByteArray result( encodeFloat( value ) );
if( prepend )
{
source->prepend( result );
}
else
{
source->append( result );
}
}
/**
* Return how much bytes a certain unsigned value takes up using multi-byte encoding.
*
* @param value The unsigned value to check
* @return Number of bytes required for multi-byte storage of that value
*/
quint8 Compress::getMultiByteSize( quint64 value )
{
quint8 bytes = 1;
while( value )
{
value >>= 7;
if( value )
{
++bytes;
}
}
return bytes;
}
/**
* Return how much bytes a certain signed value takes up using multi-byte encoding.
*
* @param value The signed value to check
* @return Number of bytes required for multi-byte storage of that value
*/
quint8 Compress::getMultiByteSize( qint64 value )
{
quint8 bytes = 1;
while( value )
{
value >>= 6;
if( value )
{
++bytes;
}
}
return bytes;
}
+57
View File
@@ -0,0 +1,57 @@
/***************************************************************************
* Copyright (C) 2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* Copyright (C) 2009 by Adam Goossens *
* adam@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef MULTIBYTECODING_H
#define MULTIBYTECODING_H
#include "datasource.h"
#include <QByteArray>
namespace Isf
{
namespace Compress
{
quint64 decodeUInt( DataSource* source );
qint64 decodeInt( DataSource* source );
float decodeFloat( DataSource* source );
QByteArray encodeUInt( quint64 value );
void encodeUInt( DataSource* source, quint64 value, bool prepend = false );
QByteArray encodeInt( qint64 value );
void encodeInt( DataSource* source, qint64 value, bool prepend = false );
QByteArray encodeFloat( float value );
void encodeFloat( DataSource* source, float value, bool prepend = false );
quint8 getMultiByteSize( quint64 value );
quint8 getMultiByteSize( qint64 value );
}
}
#endif
+48
View File
@@ -0,0 +1,48 @@
/***************************************************************************
* Copyright (C) 2009 by Valerio Pilo *
* valerio@kmess.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ISFQT_GIF_SUPPORT_H
#define ISFQT_GIF_SUPPORT_H
#include <gif_lib.h>
#define MAX_GIF_BYTE 255
// Internal helper function to read GIF data from a byte array
int GifReadFromByteArray( GifFileType* gif, GifByteType* bytes, int size )
{
QBuffer* buffer = (QBuffer*) gif->UserData;
return buffer->read( (char*)bytes, size );
}
// Internal helper function to write GIF data into a byte array
int GifWriteToByteArray( GifFileType* gif, const GifByteType* bytes, int size )
{
QBuffer* buffer = (QBuffer*) gif->UserData;
return buffer->write( (char*)bytes, size );
}
#endif

Some files were not shown because too many files have changed in this diff Show More