diff options
Diffstat (limited to 'kjsembed/tools')
-rw-r--r-- | kjsembed/tools/Doxyfile | 824 | ||||
-rw-r--r-- | kjsembed/tools/README | 3 | ||||
-rw-r--r-- | kjsembed/tools/coverage/README | 2 | ||||
-rw-r--r-- | kjsembed/tools/coverage/allqobjects.txt | 145 | ||||
-rw-r--r-- | kjsembed/tools/coverage/classes.js | 5 | ||||
-rw-r--r-- | kjsembed/tools/coverage/coverage.sh | 7 | ||||
-rw-r--r-- | kjsembed/tools/coverage/supported.txt | 71 | ||||
-rw-r--r-- | kjsembed/tools/coverage/unsupported.js | 11 | ||||
-rw-r--r-- | kjsembed/tools/coverage/unsupported.txt | 95 | ||||
-rwxr-xr-x | kjsembed/tools/create_bindings.sh | 23 | ||||
-rw-r--r-- | kjsembed/tools/doxygen2cons_cpp.xsl | 99 | ||||
-rw-r--r-- | kjsembed/tools/doxygen2cons_h.xsl | 79 | ||||
-rw-r--r-- | kjsembed/tools/doxygen2imp_cpp.xsl | 299 | ||||
-rw-r--r-- | kjsembed/tools/doxygen2imp_h.xsl | 86 | ||||
-rw-r--r-- | kjsembed/tools/headers/qbrush.h | 91 | ||||
-rw-r--r-- | kjsembed/tools/headers/qcanvas.h | 806 | ||||
-rw-r--r-- | kjsembed/tools/headers/qdir.h | 246 | ||||
-rw-r--r-- | kjsembed/tools/headers/qpen.h | 99 | ||||
-rw-r--r-- | kjsembed/tools/headers/qtimer.h | 88 | ||||
-rw-r--r-- | kjsembed/tools/xml/DO_NOT_PRUNE | 0 |
20 files changed, 3079 insertions, 0 deletions
diff --git a/kjsembed/tools/Doxyfile b/kjsembed/tools/Doxyfile new file mode 100644 index 00000000..e2686a09 --- /dev/null +++ b/kjsembed/tools/Doxyfile @@ -0,0 +1,824 @@ +# Doxyfile 1.2.9.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# 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 = KJSEmbed + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# 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, 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 = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the 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 = NO + +# 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 = 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 + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a class diagram (in Html and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. + +CLASS_DIAGRAMS = YES + +# 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 = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the 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 = YES + +# 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 = NO + +# 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 = 8 + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# 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 = + +# 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 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 = headers + +# 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 all files are included. + +FILE_PATTERNS = *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = doxygen_fakes.h +#EXCLUDE = customobject_imp.h jsfactory_imp.h jsproxy_imp.h \ +# kjsembedpart_imp.h jsbuiltin_imp.h \ +# jsobjectproxy_imp.h jsvalueproxy_imp.h \ +# doxygen_fakes.h + +# 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.* + +# 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 = + +# 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 the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = KJSEmbed + +#--------------------------------------------------------------------------- +# 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_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the 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 = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# 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 Netscape 4.0+ +# or Internet explorer 4.0+). + +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 = + +# 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 = + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_XML = YES + +#--------------------------------------------------------------------------- +# 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 = YES + +# 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 = YES + +# 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 = Q_PROPERTY()= + +# 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 = + +#--------------------------------------------------------------------------- +# 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 + +# 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 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 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 = YES + +# 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 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 = 1024 + +# 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 = diff --git a/kjsembed/tools/README b/kjsembed/tools/README new file mode 100644 index 00000000..6cb7547e --- /dev/null +++ b/kjsembed/tools/README @@ -0,0 +1,3 @@ +This directory contains work that will hopefully lead to automatic generation +of the bindings. + diff --git a/kjsembed/tools/coverage/README b/kjsembed/tools/coverage/README new file mode 100644 index 00000000..e6b57569 --- /dev/null +++ b/kjsembed/tools/coverage/README @@ -0,0 +1,2 @@ +A simplistic way to check which objects are supported by kjsembed and which +are missing. diff --git a/kjsembed/tools/coverage/allqobjects.txt b/kjsembed/tools/coverage/allqobjects.txt new file mode 100644 index 00000000..853e9e1d --- /dev/null +++ b/kjsembed/tools/coverage/allqobjects.txt @@ -0,0 +1,145 @@ +QAccel +QAccessibleObject +QAction +QActionGroup +QApplication +QAquaStyle +QAssistantClient +QAxObject +QAxWidget +QBoxLayout +QButton +QButtonGroup +QCDEStyle +QCanvas +QCanvasView +QCheckBox +QClipboard +QColorDialog +QColorDrag +QComboBox +QCommonStyle +QCopChannel +QDataBrowser +QDataPump +QDataTable +QDataView +QDateEdit +QDateTimeEdit +QDateTimeEditBase +QDesktopWidget +QDial +QDialog +QDns +QDockArea +QDockWindow +QDoubleValidator +QDragObject +QEditorFactory +QErrorMessage +QEventLoop +QFileDialog +QFileIconProvider +QFontDialog +QFrame +QFtp +QGLWidget +QGrid +QGridLayout +QGridView +QGroupBox +QHBox +QHBoxLayout +QHButtonGroup +QHGroupBox +QHeader +QHttp +QIconDrag +QIconView +QImageDrag +QInputDialog +QIntValidator +QLCDNumber +QLabel +QLayout +QLineEdit +QListBox +QListView +QLocalFs +QMacStyle +QMainWindow +QMenuBar +QMessageBox +QMotif +QMotifDialog +QMotifPlusStyle +QMotifStyle +QMotifWidget +QMultiLineEdit +QNPInstance +QNPWidget +QNetworkOperation +QNetworkProtocol +QObject +QObjectCleanupHandler +QPlatinumStyle +QPopupMenu +QProcess +QProgressBar +QProgressDialog +QPushButton +QRadioButton +QRegExpValidator +QSGIStyle +QScrollBar +QScrollView +QServerSocket +QSessionManager +QSignal +QSignalMapper +QSizeGrip +QSlider +QSocket +QSocketNotifier +QSound +QSpinBox +QSplashScreen +QSplitter +QSqlDatabase +QSqlDriver +QSqlEditorFactory +QSqlForm +QStatusBar +QStoredDrag +QStyle +QStyleSheet +QTabBar +QTabDialog +QTabWidget +QTable +QTextBrowser +QTextDrag +QTextEdit +QTextView +QTimeEdit +QTimer +QToolBar +QToolBox +QToolButton +QToolTipGroup +QTranslator +QUriDrag +QUrlOperator +QVBox +QVBoxLayout +QVButtonGroup +QVGroupBox +QValidator +QWSKeyboardHandler +QWidget +QWidgetStack +QWindowsStyle +QWindowsXPStyle +QWizard +QWorkspace +QXtWidget diff --git a/kjsembed/tools/coverage/classes.js b/kjsembed/tools/coverage/classes.js new file mode 100644 index 00000000..acd7206e --- /dev/null +++ b/kjsembed/tools/coverage/classes.js @@ -0,0 +1,5 @@ +var classes = Factory.constructors().sort(); + +// Print out the supported classes +for ( var i=0 ; i < classes.length ; i++ ) + print( classes[i]+'\n' ); diff --git a/kjsembed/tools/coverage/coverage.sh b/kjsembed/tools/coverage/coverage.sh new file mode 100644 index 00000000..3b181bb3 --- /dev/null +++ b/kjsembed/tools/coverage/coverage.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +KJSCMD='../../kjscmd' + +$KJSCMD classes.js > supported.txt +$KJSCMD unsupported.js < allqobjects.txt > unsupported.txt + diff --git a/kjsembed/tools/coverage/supported.txt b/kjsembed/tools/coverage/supported.txt new file mode 100644 index 00000000..dbf96951 --- /dev/null +++ b/kjsembed/tools/coverage/supported.txt @@ -0,0 +1,71 @@ +Config +Dcop +EvalError +Image +Line +Movie +NetAccess +Painter +Pen +Pixmap +PixmapLabel +QBoxLayout +QButtonGroup +QCanvasView +QCheckBox +QComboBox +QDataBrowser +QDataTable +QDataView +QDateEdit +QDateTimeEdit +QDial +QDialog +QFrame +QGrid +QGroupBox +QHBox +QHBoxLayout +QIconView +QLCDNumber +QLabel +QLayout +QLayoutWidget +QLineEdit +QListBox +QListView +QMainWindow +QMultiLineEdit +QObject +QPopupMenu +QProgressBar +QPushButton +QRadioButton +QScrollBar +QScrollView +QSlider +QSpinBox +QSplitter +QTabWidget +QTable +QTextBrowser +QTextEdit +QTextView +QTimeEdit +QTimer +QToolBox +QToolButton +QVBox +QVBoxLayout +QWidget +QWidgetStack +QWizard +RangeError +ReferenceError +SqlDatabase +SqlQuery +SyntaxError +TextLabel +TextStream +TypeError +URIError diff --git a/kjsembed/tools/coverage/unsupported.js b/kjsembed/tools/coverage/unsupported.js new file mode 100644 index 00000000..331849e2 --- /dev/null +++ b/kjsembed/tools/coverage/unsupported.js @@ -0,0 +1,11 @@ + +var line = readLine(); +while ( line != null ) { + line = line.replace( /^ */g, '' ); + line = line.replace( / *$/g, '' ); + + if ( !Factory.isSupported( line ) ) + print( line + ' MISSING\n' ); + + line = readLine(); +} diff --git a/kjsembed/tools/coverage/unsupported.txt b/kjsembed/tools/coverage/unsupported.txt new file mode 100644 index 00000000..1ea2eb7b --- /dev/null +++ b/kjsembed/tools/coverage/unsupported.txt @@ -0,0 +1,95 @@ +QAccel MISSING +QAccessibleObject MISSING +QAction MISSING +QActionGroup MISSING +QApplication MISSING +QAquaStyle MISSING +QAssistantClient MISSING +QAxObject MISSING +QAxWidget MISSING +QButton MISSING +QCDEStyle MISSING +QCanvas MISSING +QClipboard MISSING +QColorDialog MISSING +QColorDrag MISSING +QCommonStyle MISSING +QCopChannel MISSING +QDataPump MISSING +QDateTimeEditBase MISSING +QDesktopWidget MISSING +QDns MISSING +QDockArea MISSING +QDockWindow MISSING +QDoubleValidator MISSING +QDragObject MISSING +QEditorFactory MISSING +QErrorMessage MISSING +QEventLoop MISSING +QFileDialog MISSING +QFileIconProvider MISSING +QFontDialog MISSING +QFtp MISSING +QGLWidget MISSING +QGridLayout MISSING +QGridView MISSING +QHButtonGroup MISSING +QHGroupBox MISSING +QHeader MISSING +QHttp MISSING +QIconDrag MISSING +QImageDrag MISSING +QInputDialog MISSING +QIntValidator MISSING +QLocalFs MISSING +QMacStyle MISSING +QMenuBar MISSING +QMessageBox MISSING +QMotif MISSING +QMotifDialog MISSING +QMotifPlusStyle MISSING +QMotifStyle MISSING +QMotifWidget MISSING +QNPInstance MISSING +QNPWidget MISSING +QNetworkOperation MISSING +QNetworkProtocol MISSING +QObjectCleanupHandler MISSING +QPlatinumStyle MISSING +QProcess MISSING +QProgressDialog MISSING +QRegExpValidator MISSING +QSGIStyle MISSING +QServerSocket MISSING +QSessionManager MISSING +QSignal MISSING +QSignalMapper MISSING +QSizeGrip MISSING +QSocket MISSING +QSocketNotifier MISSING +QSound MISSING +QSplashScreen MISSING +QSqlDatabase MISSING +QSqlDriver MISSING +QSqlEditorFactory MISSING +QSqlForm MISSING +QStatusBar MISSING +QStoredDrag MISSING +QStyle MISSING +QStyleSheet MISSING +QTabBar MISSING +QTabDialog MISSING +QTextDrag MISSING +QToolBar MISSING +QToolTipGroup MISSING +QTranslator MISSING +QUriDrag MISSING +QUrlOperator MISSING +QVButtonGroup MISSING +QVGroupBox MISSING +QValidator MISSING +QWSKeyboardHandler MISSING +QWindowsStyle MISSING +QWindowsXPStyle MISSING +QWorkspace MISSING +QXtWidget MISSING diff --git a/kjsembed/tools/create_bindings.sh b/kjsembed/tools/create_bindings.sh new file mode 100755 index 00000000..54c65965 --- /dev/null +++ b/kjsembed/tools/create_bindings.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +function bind_class() +{ + xsltproc doxygen2imp_h.xsl "xml/class$1.xml" > "$2_imp.h" + xsltproc doxygen2imp_cpp.xsl "xml/class$1.xml" > "$2_imp.cpp" + xsltproc doxygen2cons_h.xsl "xml/class$1.xml" > "$2_cons.h" + xsltproc doxygen2cons_cpp.xsl "xml/class$1.xml" > "$2_cons.cpp" +} + +doxygen + +bind_class QComboBox qcombobox +bind_class Qt qnamespace +bind_class KPopupTitle kpopupmenu + +#bind_class QDir qdir +#bind_class QListViewItem qlistview + +#bind_class QTimer qtimer +#bind_class QBrush qbrush +#bind_class QPen qpen +#bind_class QPainter qpainter diff --git a/kjsembed/tools/doxygen2cons_cpp.xsl b/kjsembed/tools/doxygen2cons_cpp.xsl new file mode 100644 index 00000000..e352246f --- /dev/null +++ b/kjsembed/tools/doxygen2cons_cpp.xsl @@ -0,0 +1,99 @@ +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:output method="text" /> + +<xsl:template match="/doxygen/compounddef"> +<xsl:variable name="clazz" select="compoundname" /> +<xsl:variable name="consmeth" select="sectiondef/memberdef[@kind='function' and @prot='public']" /> + +#include <klocale.h> +#include <kjs/object.h> + +#include <<xsl:value-of select="includes" />> +#include "<xsl:value-of select="substring-before(includes,'.h')"/>_imp.h" + +/** + * Namespace containing the KJSEmbed library. + */ +namespace KJSEmbed { + +<!-- Select and invoke the correct constructor. --> +KJS::Object <xsl:value-of select="$clazz" />Cons::construct( KJS::ExecState *exec, KJS::Object &obj, const KJS::List &args ) +{ + switch( id ) { +<xsl:for-each select="$consmeth"> + <xsl:choose> + <xsl:when test="name = $clazz"> + <xsl:variable name="cons_name"><xsl:value-of select="name" />_<xsl:value-of select="position()" /></xsl:variable> + <xsl:variable name="cons_id">Constructor_<xsl:value-of select="$cons_name" /></xsl:variable> + case <xsl:value-of select="$cons_id" />: + return <xsl:value-of select="$cons_name" />( exec, obj, args ); + break; + </xsl:when> + </xsl:choose> +</xsl:for-each> + default: + break; + } + + QString msg = i18n("<xsl:value-of select="$clazz" />Cons has no constructor with id '%1'").arg(id); + KJS::Object err = KJS::Error::create( exec, KJS::ReferenceError, msg.utf8() ); + exec->setException( err ); + return err; +} + +<!-- Implementations of the constructors. --> +<xsl:for-each select="$consmeth"> + <xsl:choose> + <xsl:when test="name = $clazz"> + <xsl:variable name="cons_name"><xsl:value-of select="name" />_<xsl:value-of select="position()" /></xsl:variable> + <xsl:variable name="cons_id">Constructor_<xsl:value-of select="$cons_name" /></xsl:variable> +KJS::Object <xsl:value-of select="$clazz" />Cons::<xsl:value-of select="$cons_name" />( KJS::ExecState *exec, KJS::Object &obj, const KJS::List &args ) +{ + <xsl:for-each select="param/type"> + <xsl:choose> + <xsl:when test=". = 'QString'"> + QString arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toString(exec).qstring() : QString::null; + </xsl:when> + <xsl:when test=". = 'const QString &'"> + QString arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toString(exec).qstring() : QString::null; + </xsl:when> + <xsl:when test=". = 'const char *'"> + const char *arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toString(exec).ascii() : 0; + </xsl:when> + <xsl:when test=". = 'int'"> + int arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toInteger(exec) : -1; + </xsl:when> + <xsl:when test=". = 'uint'"> + uint arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toInteger(exec) : -1; + </xsl:when> + <xsl:when test=". = 'double'"> + double arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toInteger(exec) : -1; + </xsl:when> + <xsl:when test=". = 'bool'"> + bool arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toBoolean(exec) : false; + </xsl:when> + <xsl:when test=". = 'const QStringList &'"> + QStringList arg<xsl:value-of select="position()-1" />; + if ( args.size() >= <xsl:value-of select="position()" /> ) { + // TODO: populate the list + } + </xsl:when> + <xsl:otherwise> + // Unsupported parameter <xsl:value-of select="." /> + return KJS::Value(); + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> +} + </xsl:when> + </xsl:choose> +</xsl:for-each> + +} // namespace KJSEmbed + +// Local Variables: +// c-basic-offset: 4 +// End: + +</xsl:template> +</xsl:stylesheet> diff --git a/kjsembed/tools/doxygen2cons_h.xsl b/kjsembed/tools/doxygen2cons_h.xsl new file mode 100644 index 00000000..8140d52e --- /dev/null +++ b/kjsembed/tools/doxygen2cons_h.xsl @@ -0,0 +1,79 @@ +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:output method="text" /> + +<xsl:template match="/doxygen/compounddef"> + +<xsl:variable name="clazz" select="compoundname" /> +<xsl:variable name="consmeth" select="sectiondef/memberdef[@kind='function' and @prot='public']" /> + +#ifndef KJSEMBED_<xsl:value-of select="$clazz" />_H +#define KJSEMBED_<xsl:value-of select="$clazz" />_H + +#include <kjs/interpreter.h> +#include <kjs/object.h> + +#include <kjsembed/jsobjectproxy_imp.h> + +class <xsl:value-of select="$clazz" />; + +/** + * Namespace containing the KJSEmbed library. + */ +namespace KJSEmbed { + +/** + * Wrapper class for <xsl:value-of select="$clazz" /> constructors. + * + * @author Richard Moore, rich@kde.org + */ +class <xsl:value-of select="$clazz" />Cons : public JSProxyImp +{ +public: + /** Enumerates the constructors supported by this class. */ + enum Constructors { +<xsl:for-each select="$consmeth"> + <xsl:choose> + <xsl:when test="name = $clazz"> + <xsl:variable name="cons_name"><xsl:value-of select="name" />_<xsl:value-of select="position()" /></xsl:variable> + <xsl:variable name="cons_id">Constructor_<xsl:value-of select="$cons_name" /></xsl:variable> + <xsl:text> </xsl:text><xsl:value-of select="$cons_id" />, +</xsl:when> + </xsl:choose> +</xsl:for-each> + LastConstuctor = -1 + }; + + // + // Constructors implemented by this class. + // +<xsl:for-each select="$consmeth"> + <xsl:variable name="cons_name"><xsl:value-of select="name" />_<xsl:value-of select="position()" /></xsl:variable> + <xsl:choose> + <xsl:when test="name = $clazz"> + KJS::Object <xsl:value-of select="$cons_name" />( KJS::ExecState *exec, KJS::Object &obj, const KJS::List &args );</xsl:when> + </xsl:choose> +</xsl:for-each> + + // + // JS binding code. + // + + /** Returns true iff this object implements the construct function. */ + virtual bool implementsConstruct() const { return true; } + + /** Invokes the construct function. */ + virtual KJS::Value construct( KJS::ExecState *exec, KJS::Object &self, const KJS::List &args ); +private: + int id; +}; + +} // namespace KJSEmbed + +#endif // KJSEMBED_<xsl:value-of select="compoundname" />_H + +// Local Variables: +// c-basic-offset: 4 +// End: + +</xsl:template> +</xsl:stylesheet> diff --git a/kjsembed/tools/doxygen2imp_cpp.xsl b/kjsembed/tools/doxygen2imp_cpp.xsl new file mode 100644 index 00000000..4e8d73bf --- /dev/null +++ b/kjsembed/tools/doxygen2imp_cpp.xsl @@ -0,0 +1,299 @@ +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:output method="text" /> + +<xsl:template match="/doxygen/compounddef"> + +<xsl:variable name="clazz" select="compoundname" /> +<xsl:variable name="consmeth" select="sectiondef/memberdef[@kind='function' and @prot='public']" /> +<xsl:variable name="enums" select="sectiondef/memberdef[@kind='enum' and @prot='public']" /> + +#include <qpalette.h> +#include <qpixmap.h> +#include <qfont.h> + +#include <klocale.h> +#include <kjs/object.h> +#include <kdebug.h> + +#include <kjsembed/jsobjectproxy.h> +#include <kjsembed/jsopaqueproxy.h> +#include <kjsembed/jsbinding.h> + +#include <<xsl:value-of select="includes" />> +#include "<xsl:value-of select="substring-before(includes,'.h')"/>_imp.h" + +/** + * Namespace containing the KJSEmbed library. + */ +namespace KJSEmbed { + +<xsl:value-of select="$clazz" />Imp::<xsl:value-of select="$clazz" />Imp( KJS::ExecState *exec, int id ) + : JSProxyImp(exec), mid(id) +{ +} + +<xsl:value-of select="$clazz" />Imp::~<xsl:value-of select="$clazz" />Imp() +{ +} + +void <xsl:value-of select="$clazz" />Imp::addBindings( KJS::ExecState *exec, KJS::Object &object ) +{ + JSProxy::MethodTable methods[] = { +<xsl:for-each select="$consmeth"> + <xsl:variable name="method_name"><xsl:value-of select="name" />_<xsl:value-of select="position()" /></xsl:variable> + <xsl:variable name="method_id">Method_<xsl:value-of select="$method_name" /></xsl:variable> + <xsl:choose> + <xsl:when test="not(starts-with( name, 'operator' ) or starts-with( name, '~' ) or starts-with( name, $clazz ))"> + { <xsl:value-of select="$method_id" />, "<xsl:value-of select="name" />" },</xsl:when></xsl:choose> +</xsl:for-each> + { 0, 0 } + }; + + int idx = 0; + do { + <xsl:value-of select="$clazz" />Imp *meth = new <xsl:value-of select="$clazz" />Imp( exec, methods[idx].id ); + object.put( exec , methods[idx].name, KJS::Object(meth) ); + ++idx; + } while( methods[idx].id ); + +<xsl:if test="count($enums) != 0"> + // + // Define the enum constants + // + struct EnumValue { + const char *id; + int val; + }; + + EnumValue enums[] = { +<xsl:for-each select="$enums"> + // enum <xsl:value-of select="./name" /> + <xsl:for-each select="./enumvalue"> + { "<xsl:value-of select="./name" />", <xsl:value-of select="$clazz" />::<xsl:value-of select="./name" /> },</xsl:for-each> +</xsl:for-each> + { 0, 0 } + }; + + int enumidx = 0; + do { + object.put( exec, enums[enumidx].id, KJS::Number(enums[enumidx].val), KJS::ReadOnly ); + ++enumidx; + } while( enums[enumidx].id ); +</xsl:if> +} + +<xsl:value-of select="$clazz" /> *<xsl:value-of select="$clazz" />Imp::to<xsl:value-of select="$clazz" />( KJS::Object &self ) +{ + JSObjectProxy *ob = JSProxy::toObjectProxy( self.imp() ); + if ( ob ) { + QObject *obj = ob->object(); + if ( obj ) + return dynamic_cast<QComboBox *>( obj ); + } + + JSOpaqueProxy *op = JSProxy::toOpaqueProxy( self.imp() ); + if ( !op ) + return 0; + + if ( op->typeName() != "<xsl:value-of select="$clazz" />" ) + return 0; + + return (<xsl:value-of select="$clazz" /> *)( op->toVoidStar() ); +} + +<!-- Select and invoke the correct method. --> +KJS::Value <xsl:value-of select="$clazz" />Imp::call( KJS::ExecState *exec, KJS::Object &self, const KJS::List &args ) +{ + instance = <xsl:value-of select="$clazz" />Imp::to<xsl:value-of select="$clazz" />( self ); + + switch( mid ) { +<xsl:for-each select="$consmeth"> + <xsl:variable name="method_name"><xsl:value-of select="name" />_<xsl:value-of select="position()" /></xsl:variable> + <xsl:variable name="method_id">Method_<xsl:value-of select="$method_name" /></xsl:variable> + <xsl:choose> + <xsl:when test="not(starts-with( name, 'operator' ) or starts-with( name, '~' ) or starts-with( name, $clazz ))"> + case <xsl:value-of select="$method_id" />: + return <xsl:value-of select="$method_name" />( exec, self, args ); + break; + </xsl:when> + </xsl:choose> +</xsl:for-each> + default: + break; + } + + QString msg = i18n( "<xsl:value-of select="$clazz" />Imp has no method with id '%1'" ).arg( mid ); + KJS::Object err = KJS::Error::create( exec, KJS::ReferenceError, msg.utf8() ); + exec->setException( err ); + return err; +} + +<!-- Create the implementation for each method. --> +<xsl:for-each select="$consmeth"> +<xsl:variable name="method"> +<xsl:value-of select="$clazz" />Imp::<xsl:value-of select="name" />_<xsl:value-of select="position()" /> +</xsl:variable> + + <xsl:choose> + <xsl:when test="(name != $clazz) and not(starts-with(name, 'operator') or starts-with(name, '~'))"> +<!-- Binding defined for a specific method. --> +KJS::Value <xsl:value-of select="$method" />( KJS::ExecState *exec, KJS::Object &obj, const KJS::List &args ) +{ + <xsl:for-each select="param/type"> + <xsl:choose> + <xsl:when test=". = 'QString'"> + QString arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toString(exec).qstring() : QString::null; + </xsl:when> + <xsl:when test=". = 'const QString &'"> + QString arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toString(exec).qstring() : QString::null; + </xsl:when> + <xsl:when test=". = 'const char *'"> + const char *arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toString(exec).ascii() : 0; + </xsl:when> + <xsl:when test=". = 'int'"> + int arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toInteger(exec) : -1; + </xsl:when> + <xsl:when test=". = 'uint'"> + uint arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toInteger(exec) : -1; + </xsl:when> + <xsl:when test=". = 'double'"> + double arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toInteger(exec) : -1; + </xsl:when> + <xsl:when test=". = 'bool'"> + bool arg<xsl:value-of select="position()-1" /> = (args.size() >= <xsl:value-of select="position()" />) ? args[<xsl:value-of select="position()-1" />].toBoolean(exec) : false; + </xsl:when> + <xsl:when test=". = 'const QFont &'"> + QFont arg<xsl:value-of select="position()-1" />; // TODO + </xsl:when> + <xsl:when test=". = 'const QPalette &'"> + QPalette arg<xsl:value-of select="position()-1" />; // TODO + </xsl:when> + <xsl:when test=". = 'const QStringList &'"> + QStringList arg<xsl:value-of select="position()-1" /> = extractQStringList(exec, args, <xsl:value-of select="position()-1" />); + </xsl:when> + <xsl:when test=". = 'const QStrList &'"> + QStrList arg<xsl:value-of select="position()-1" />; + if ( args.size() >= <xsl:value-of select="position()" /> ) { + // TODO: populate the list + } + </xsl:when> + <xsl:when test=". = 'const QRect &'"> + QRect arg<xsl:value-of select="position()-1" /> = extractQRect(exec, args, <xsl:value-of select="position()-1" />); + </xsl:when> + <xsl:when test=". = 'const QSize &'"> + QSize arg<xsl:value-of select="position()-1" /> = extractQSize(exec, args, <xsl:value-of select="position()-1" />); + </xsl:when> + <xsl:when test=". = 'const QPixmap &'"> + QPixmap arg<xsl:value-of select="position()-1" /> = extractQPixmap(exec, args, <xsl:value-of select="position()-1" />); + </xsl:when> + <xsl:when test=". = 'const QColor &'"> + QColor arg<xsl:value-of select="position()-1" /> = extractQColor(exec, args, <xsl:value-of select="position()-1" />); + </xsl:when> + <xsl:when test=". = 'const QDate &'"> + QDate arg<xsl:value-of select="position()-1" /> = extractQDate(exec, args, <xsl:value-of select="position()-1" />); + </xsl:when> + <xsl:when test=". = 'const QTime &'"> + QTime arg<xsl:value-of select="position()-1" /> = extractQTime(exec, args, <xsl:value-of select="position()-1" />); + </xsl:when> + <xsl:when test=". = 'const QDateTime &'"> + QDateTime arg<xsl:value-of select="position()-1" /> = extractQDateTime(exec, args, <xsl:value-of select="position()-1" />); + </xsl:when> + <xsl:when test=". = 'Policy'"> + QComboBox::Policy arg<xsl:value-of select="position()-1" />; // TODO (hack for combo box) + </xsl:when> + <xsl:otherwise> + // Unsupported parameter <xsl:value-of select="." /> + return KJS::Value(); + + <xsl:value-of select="." />arg<xsl:value-of select="position()-1" />; // Dummy + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <!-- Specifies the return type --> + <xsl:variable name="rettype"> + <xsl:choose> + <xsl:when test="starts-with(type,'virtual ')"> + <xsl:value-of select="substring-after(type,'virtual ')" /> + </xsl:when> + <xsl:otherwise><xsl:value-of select="type" /></xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + + <xsl:when test="$rettype = 'bool'"> + bool ret; + ret = instance-><xsl:value-of select="name" />( <xsl:for-each select="param"> + arg<xsl:value-of select="position()-1" /><xsl:if test="position() != count(../param)">,</xsl:if></xsl:for-each> ); + return KJS::Boolean( ret ); + </xsl:when> + + <xsl:when test="$rettype = 'int'"> + int ret; + ret = instance-><xsl:value-of select="name" />( <xsl:for-each select="param"> + arg<xsl:value-of select="position()-1" /><xsl:if test="position() != count(../param)">,</xsl:if></xsl:for-each> ); + return KJS::Number( ret ); + </xsl:when> + + <xsl:when test="$rettype = 'uint'"> + uint ret; + ret = instance-><xsl:value-of select="name" />( <xsl:for-each select="param"> + arg<xsl:value-of select="position()-1" /><xsl:if test="position() != count(../param)">,</xsl:if></xsl:for-each> ); + return KJS::Number( ret ); + </xsl:when> + + <xsl:when test="$rettype = 'double'"> + double ret; + ret = instance-><xsl:value-of select="name" />( <xsl:for-each select="param"> + arg<xsl:value-of select="position()-1" /><xsl:if test="position() != count(../param)">,</xsl:if></xsl:for-each> ); + return KJS::Number( ret ); + </xsl:when> + + <xsl:when test="$rettype = 'QString'"> + QString ret; + ret = instance-><xsl:value-of select="name" />( <xsl:for-each select="param"> + arg<xsl:value-of select="position()-1" /><xsl:if test="position() != count(../param)">,</xsl:if></xsl:for-each> ); + return KJS::String( ret ); + </xsl:when> + + <xsl:when test="$rettype = 'const char *'"> + const char *ret; + ret = instance-><xsl:value-of select="name" />( <xsl:for-each select="param"> + arg<xsl:value-of select="position()-1" /><xsl:if test="position() != count(../param)">,</xsl:if></xsl:for-each> ); + return KJS::String( ret ); + </xsl:when> + + <xsl:when test="$rettype = 'QStringList'"> + QStringList ret; + ret = instance-><xsl:value-of select="name" />( <xsl:for-each select="param"> + arg<xsl:value-of select="position()-1" /><xsl:if test="position() != count(../param)">,</xsl:if></xsl:for-each> ); + + return convertToValue( exec, ret ); + </xsl:when> + + <xsl:when test="$rettype = 'void'"> + instance-><xsl:value-of select="name" />( <xsl:for-each select="param"> + arg<xsl:value-of select="position()-1" /><xsl:if test="position() != count(../param)">,</xsl:if></xsl:for-each> ); + return KJS::Value(); // Returns void + </xsl:when> + + <xsl:otherwise> + instance-><xsl:value-of select="name" />( <xsl:for-each select="param"> + arg<xsl:value-of select="position()-1" /><xsl:if test="position() != count(../param)">,</xsl:if></xsl:for-each> ); + return KJS::Value(); // Returns '<xsl:value-of select="$rettype" />' + </xsl:otherwise> + </xsl:choose> +} + </xsl:when> + </xsl:choose> +</xsl:for-each> + +} // namespace KJSEmbed + +// Local Variables: +// c-basic-offset: 4 +// End: + +</xsl:template> +</xsl:stylesheet> diff --git a/kjsembed/tools/doxygen2imp_h.xsl b/kjsembed/tools/doxygen2imp_h.xsl new file mode 100644 index 00000000..ce00e7a1 --- /dev/null +++ b/kjsembed/tools/doxygen2imp_h.xsl @@ -0,0 +1,86 @@ +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:output method="text" /> + +<xsl:template match="/doxygen/compounddef"> + +<xsl:variable name="clazz" select="compoundname" /> +<xsl:variable name="consmeth" select="sectiondef/memberdef[@kind='function' and @prot='public']" /> + +#ifndef KJSEMBED_<xsl:value-of select="$clazz" />_H +#define KJSEMBED_<xsl:value-of select="$clazz" />_H + +#include <kjs/interpreter.h> +#include <kjs/object.h> + +#include <kjsembed/jsobjectproxy_imp.h> + +class <xsl:value-of select="$clazz" />; + +/** + * Namespace containing the KJSEmbed library. + */ +namespace KJSEmbed { + +/** + * Wrapper class for <xsl:value-of select="$clazz" /> methods. + * + * @author Richard Moore, rich@kde.org + */ +class <xsl:value-of select="$clazz" />Imp : public JSProxyImp +{ +public: + /** Enumerates the methods supported by this class. */ + enum Methods { +<xsl:for-each select="$consmeth"> + <xsl:variable name="method_name"><xsl:value-of select="name" />_<xsl:value-of select="position()" /></xsl:variable> + <xsl:choose> + <xsl:when test="not(starts-with( name, 'operator' ) or starts-with( name, '~' ) or starts-with( name, $clazz ))"> + Method_<xsl:value-of select="$method_name" />,</xsl:when> + </xsl:choose> +</xsl:for-each> + Method_Last = -1 + }; + + <xsl:value-of select="$clazz" />Imp( KJS::ExecState *exec, int id ); + ~<xsl:value-of select="$clazz" />Imp(); + + static void addBindings( KJS::ExecState *exec, KJS::Object &object ); + + static <xsl:value-of select="$clazz" /> *to<xsl:value-of select="$clazz" />( KJS::Object &object ); + + // + // Methods implemented by this class. + // +<xsl:for-each select="$consmeth"> + <xsl:variable name="method_name"><xsl:value-of select="name" />_<xsl:value-of select="position()" /></xsl:variable> + <xsl:choose> + <xsl:when test="not(starts-with( name, 'operator' ) or starts-with( name, '~' ) or starts-with( name, $clazz ))"> + KJS::Value <xsl:value-of select="$method_name" />( KJS::ExecState *exec, KJS::Object &obj, const KJS::List &args );</xsl:when> + </xsl:choose> +</xsl:for-each> + + // + // JS binding code. + // + + /** Returns true iff this object implements the call function. */ + virtual bool implementsCall() const { return true; } + + /** Invokes the call function. */ + virtual KJS::Value call( KJS::ExecState *exec, KJS::Object &self, const KJS::List &args ); + +private: + <xsl:value-of select="$clazz" /> *instance; // Temp + int mid; +}; + +} // namespace KJSEmbed + +#endif // KJSEMBED_<xsl:value-of select="compoundname" />_H + +// Local Variables: +// c-basic-offset: 4 +// End: + +</xsl:template> +</xsl:stylesheet> diff --git a/kjsembed/tools/headers/qbrush.h b/kjsembed/tools/headers/qbrush.h new file mode 100644 index 00000000..16e4f3db --- /dev/null +++ b/kjsembed/tools/headers/qbrush.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** +** Definition of QBrush class +** +** Created : 940112 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QBRUSH_H +#define QBRUSH_H + +#ifndef QT_H +#include "qcolor.h" +#include "qshared.h" +#endif // QT_H + + +class Q_EXPORT QBrush: public Qt +{ +friend class QPainter; +public: + QBrush(); + QBrush( BrushStyle ); + QBrush( const QColor &, BrushStyle=SolidPattern ); + QBrush( const QColor &, const QPixmap & ); + QBrush( const QBrush & ); + ~QBrush(); + QBrush &operator=( const QBrush & ); + + BrushStyle style() const { return data->style; } + void setStyle( BrushStyle ); + const QColor &color()const { return data->color; } + void setColor( const QColor & ); + QPixmap *pixmap() const { return data->pixmap; } + void setPixmap( const QPixmap & ); + + bool operator==( const QBrush &p ) const; + bool operator!=( const QBrush &b ) const + { return !(operator==(b)); } + +private: + QBrush copy() const; + void detach(); + void init( const QColor &, BrushStyle ); + struct QBrushData : public QShared { // brush data + BrushStyle style; + QColor color; + QPixmap *pixmap; + } *data; +}; + + +/***************************************************************************** + QBrush stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator<<( QDataStream &, const QBrush & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QBrush & ); +#endif + +#endif // QBRUSH_H diff --git a/kjsembed/tools/headers/qcanvas.h b/kjsembed/tools/headers/qcanvas.h new file mode 100644 index 00000000..62a33b65 --- /dev/null +++ b/kjsembed/tools/headers/qcanvas.h @@ -0,0 +1,806 @@ +/********************************************************************** +** +** +** Definition of QCanvas classes +** +** Created : 991211 +** +** Copyright (C) 1999-2002 Trolltech AS. All rights reserved. +** +** This file is part of the canvas module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCANVAS_H +#define QCANVAS_H + +#ifndef QT_H +#include "qscrollview.h" +#include "qpixmap.h" +#include "qptrlist.h" +#include "qbrush.h" +#include "qpen.h" +#include "qvaluelist.h" +#include "qpointarray.h" +#endif // QT_H + +#if !defined( QT_MODULE_CANVAS ) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_CANVAS ) +#define QM_EXPORT_CANVAS +#define QM_TEMPLATE_EXTERN_CANVAS +#else +#define QM_EXPORT_CANVAS Q_EXPORT +#define QM_TEMPLATE_EXTERN_CANVAS Q_TEMPLATE_EXTERN +#endif + +#ifndef QT_NO_CANVAS + + +class QCanvasSprite; +class QCanvasPolygonalItem; +class QCanvasRectangle; +class QCanvasPolygon; +class QCanvasEllipse; +class QCanvasText; +class QCanvasLine; +class QCanvasChunk; +class QCanvas; +class QCanvasItem; +class QCanvasView; +class QCanvasPixmap; + + +class QM_EXPORT_CANVAS QCanvasItemList : public QValueList<QCanvasItem*> { +public: + void sort(); + void drawUnique( QPainter& painter ); +}; + + +class QCanvasItemExtra; + +class QM_EXPORT_CANVAS QCanvasItem : public Qt +{ +public: + QCanvasItem(QCanvas* canvas); + virtual ~QCanvasItem(); + + double x() const + { return myx; } + double y() const + { return myy; } + double z() const + { return myz; } // (depth) + + virtual void moveBy(double dx, double dy); + void move(double x, double y); + void setX(double a) { move(a,y()); } + void setY(double a) { move(x(),a); } + void setZ(double a) { myz=a; changeChunks(); } + + bool animated() const; + virtual void setAnimated(bool y); + virtual void setVelocity( double vx, double vy); + void setXVelocity( double vx ) { setVelocity(vx,yVelocity()); } + void setYVelocity( double vy ) { setVelocity(xVelocity(),vy); } + double xVelocity() const; + double yVelocity() const; + virtual void advance(int stage); + + virtual bool collidesWith( const QCanvasItem* ) const=0; + + QCanvasItemList collisions(bool exact /* NO DEFAULT */ ) const; + + virtual void setCanvas(QCanvas*); + + virtual void draw(QPainter&)=0; + + void show(); + void hide(); + + virtual void setVisible(bool yes); + bool isVisible() const + { return (bool)vis; } + virtual void setSelected(bool yes); + bool isSelected() const + { return (bool)sel; } + virtual void setEnabled(bool yes); + bool isEnabled() const + { return (bool)ena; } + virtual void setActive(bool yes); + bool isActive() const + { return (bool)act; } +#ifndef QT_NO_COMPAT + bool visible() const + { return (bool)vis; } + bool selected() const + { return (bool)sel; } + bool enabled() const + { return (bool)ena; } + bool active() const + { return (bool)act; } +#endif + + enum RttiValues { + Rtti_Item = 0, + Rtti_Sprite = 1, + Rtti_PolygonalItem = 2, + Rtti_Text = 3, + Rtti_Polygon = 4, + Rtti_Rectangle = 5, + Rtti_Ellipse = 6, + Rtti_Line = 7, + Rtti_Spline = 8 + }; + + virtual int rtti() const; + static int RTTI; + + virtual QRect boundingRect() const=0; + virtual QRect boundingRectAdvanced() const; + + QCanvas* canvas() const + { return cnv; } + +protected: + void update() { changeChunks(); } + +private: + // For friendly subclasses... + + friend class QCanvasPolygonalItem; + friend class QCanvasSprite; + friend class QCanvasRectangle; + friend class QCanvasPolygon; + friend class QCanvasEllipse; + friend class QCanvasText; + friend class QCanvasLine; + + virtual QPointArray chunks() const; + virtual void addToChunks(); + virtual void removeFromChunks(); + virtual void changeChunks(); + virtual bool collidesWith( const QCanvasSprite*, + const QCanvasPolygonalItem*, + const QCanvasRectangle*, + const QCanvasEllipse*, + const QCanvasText* ) const = 0; + // End of friend stuff + + QCanvas* cnv; + static QCanvas* current_canvas; + double myx,myy,myz; + QCanvasItemExtra *ext; + QCanvasItemExtra& extra(); + uint ani:1; + uint vis:1; + uint val:1; + uint sel:1; + uint ena:1; + uint act:1; +}; + + +class QCanvasData; + +class QM_EXPORT_CANVAS QCanvas : public QObject +{ + Q_OBJECT +public: + QCanvas( QObject* parent = 0, const char* name = 0 ); + QCanvas(int w, int h); + QCanvas( QPixmap p, int h, int v, int tilewidth, int tileheight ); + + virtual ~QCanvas(); + + virtual void setTiles( QPixmap tiles, int h, int v, + int tilewidth, int tileheight ); + virtual void setBackgroundPixmap( const QPixmap& p ); + QPixmap backgroundPixmap() const; + + virtual void setBackgroundColor( const QColor& c ); + QColor backgroundColor() const; + + virtual void setTile( int x, int y, int tilenum ); + int tile( int x, int y ) const + { return grid[x+y*htiles]; } + + int tilesHorizontally() const + { return htiles; } + int tilesVertically() const + { return vtiles; } + + int tileWidth() const + { return tilew; } + int tileHeight() const + { return tileh; } + + virtual void resize(int width, int height); + int width() const + { return awidth; } + int height() const + { return aheight; } + QSize size() const + { return QSize(awidth,aheight); } + QRect rect() const + { return QRect( 0, 0, awidth, aheight ); } + bool onCanvas( int x, int y ) const + { return x>=0 && y>=0 && x<awidth && y<aheight; } + bool onCanvas( const QPoint& p ) const + { return onCanvas(p.x(),p.y()); } + bool validChunk( int x, int y ) const + { return x>=0 && y>=0 && x<chwidth && y<chheight; } + bool validChunk( const QPoint& p ) const + { return validChunk(p.x(),p.y()); } + + int chunkSize() const + { return chunksize; } + virtual void retune(int chunksize, int maxclusters=100); + + bool sameChunk(int x1, int y1, int x2, int y2) const + { return x1/chunksize==x2/chunksize && y1/chunksize==y2/chunksize; } + virtual void setChangedChunk(int i, int j); + virtual void setChangedChunkContaining(int x, int y); + virtual void setAllChanged(); + virtual void setChanged(const QRect& area); + virtual void setUnchanged(const QRect& area); + + // These call setChangedChunk. + void addItemToChunk(QCanvasItem*, int i, int j); + void removeItemFromChunk(QCanvasItem*, int i, int j); + void addItemToChunkContaining(QCanvasItem*, int x, int y); + void removeItemFromChunkContaining(QCanvasItem*, int x, int y); + + QCanvasItemList allItems(); + QCanvasItemList collisions( const QPoint&) const; + QCanvasItemList collisions( const QRect&) const; + QCanvasItemList collisions( const QPointArray& pa, const QCanvasItem* item, + bool exact) const; + + void drawArea(const QRect&, QPainter* p, bool double_buffer=FALSE); + + // These are for QCanvasView to call + virtual void addView(QCanvasView*); + virtual void removeView(QCanvasView*); + void drawCanvasArea(const QRect&, QPainter* p=0, bool double_buffer=TRUE); + void drawViewArea( QCanvasView* view, QPainter* p, const QRect& r, bool dbuf ); + + // These are for QCanvasItem to call + virtual void addItem(QCanvasItem*); + virtual void addAnimation(QCanvasItem*); + virtual void removeItem(QCanvasItem*); + virtual void removeAnimation(QCanvasItem*); + + virtual void setAdvancePeriod(int ms); + virtual void setUpdatePeriod(int ms); + + virtual void setDoubleBuffering(bool y); + +signals: + void resized(); + +public slots: + virtual void advance(); + virtual void update(); + +protected: + virtual void drawBackground(QPainter&, const QRect& area); + virtual void drawForeground(QPainter&, const QRect& area); + +private: + void init(int w, int h, int chunksze=16, int maxclust=100); + + QCanvasChunk& chunk(int i, int j) const; + QCanvasChunk& chunkContaining(int x, int y) const; + + QRect changeBounds(const QRect& inarea); + void drawChanges(const QRect& inarea); + + void ensureOffScrSize( int osw, int osh ); + QPixmap offscr; + int awidth,aheight; + int chunksize; + int maxclusters; + int chwidth,chheight; + QCanvasChunk* chunks; + + QCanvasData* d; + + void initTiles(QPixmap p, int h, int v, int tilewidth, int tileheight); + ushort *grid; + ushort htiles; + ushort vtiles; + ushort tilew; + ushort tileh; + bool oneone; + QPixmap pm; + QTimer* update_timer; + QColor bgcolor; + bool debug_redraw_areas; + bool dblbuf; + + friend void qt_unview(QCanvas* c); + +#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator= + QCanvas( const QCanvas & ); + QCanvas &operator=( const QCanvas & ); +#endif +}; + +class QCanvasViewData; + +class QM_EXPORT_CANVAS QCanvasView : public QScrollView +{ + Q_OBJECT +public: + + QCanvasView(QWidget* parent=0, const char* name=0, WFlags f=0); + QCanvasView(QCanvas* viewing, QWidget* parent=0, const char* name=0, WFlags f=0); + ~QCanvasView(); + + QCanvas* canvas() const + { return viewing; } + void setCanvas(QCanvas* v); + + const QWMatrix &worldMatrix() const; + const QWMatrix &inverseWorldMatrix() const; + bool setWorldMatrix( const QWMatrix & ); + +protected: + void drawContents( QPainter*, int cx, int cy, int cw, int ch ); + QSize sizeHint() const; + +private: + void drawContents( QPainter* ); + QCanvas* viewing; + QCanvasViewData* d; + friend void qt_unview(QCanvas* c); + +private slots: + void cMoving(int,int); + void updateContentsSize(); + +private: +#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator= + QCanvasView( const QCanvasView & ); + QCanvasView &operator=( const QCanvasView & ); +#endif +}; + + +class QM_EXPORT_CANVAS QCanvasPixmap : public QPixmap +{ +public: +#ifndef QT_NO_IMAGEIO + QCanvasPixmap(const QString& datafilename); +#endif + QCanvasPixmap(const QImage& image); + QCanvasPixmap(const QPixmap&, const QPoint& hotspot); + ~QCanvasPixmap(); + + int offsetX() const + { return hotx; } + int offsetY() const + { return hoty; } + void setOffset(int x, int y) { hotx = x; hoty = y; } + +private: +#if defined(Q_DISABLE_COPY) + QCanvasPixmap( const QCanvasPixmap & ); + QCanvasPixmap &operator=( const QCanvasPixmap & ); +#endif + void init(const QImage&); + void init(const QPixmap& pixmap, int hx, int hy); + + friend class QCanvasSprite; + friend class QCanvasPixmapArray; + friend bool qt_testCollision(const QCanvasSprite* s1, const QCanvasSprite* s2); + + int hotx,hoty; + + QImage* collision_mask; +}; + + +class QM_EXPORT_CANVAS QCanvasPixmapArray +{ +public: + QCanvasPixmapArray(); +#ifndef QT_NO_IMAGEIO + QCanvasPixmapArray(const QString& datafilenamepattern, int framecount=0); +#endif + // this form is deprecated + QCanvasPixmapArray(QPtrList<QPixmap>, QPtrList<QPoint> hotspots); + + QCanvasPixmapArray(QValueList<QPixmap>, QPointArray hotspots = QPointArray() ); + ~QCanvasPixmapArray(); + +#ifndef QT_NO_IMAGEIO + bool readPixmaps(const QString& datafilenamepattern, int framecount=0); + bool readCollisionMasks(const QString& filenamepattern); +#endif + + // deprecated + bool operator!(); // Failure check. + bool isValid() const; + + QCanvasPixmap* image(int i) const + { return img ? img[i] : 0; } + void setImage(int i, QCanvasPixmap* p); + uint count() const + { return (uint)framecount; } + +private: +#if defined(Q_DISABLE_COPY) + QCanvasPixmapArray( const QCanvasPixmapArray & ); + QCanvasPixmapArray &operator=( const QCanvasPixmapArray & ); +#endif +#ifndef QT_NO_IMAGEIO + bool readPixmaps(const QString& datafilenamepattern, int framecount, bool maskonly); +#endif + + void reset(); + int framecount; + QCanvasPixmap** img; +}; + + +class QM_EXPORT_CANVAS QCanvasSprite : public QCanvasItem +{ +public: + QCanvasSprite(QCanvasPixmapArray* array, QCanvas* canvas); + + void setSequence(QCanvasPixmapArray* seq); + + virtual ~QCanvasSprite(); + + void move(double x, double y); + virtual void move(double x, double y, int frame); + void setFrame(int); + enum FrameAnimationType { Cycle, Oscillate }; + virtual void setFrameAnimation(FrameAnimationType=Cycle, int step=1, int state=0); + int frame() const + { return frm; } + int frameCount() const + { return images->count(); } + + int rtti() const; + static int RTTI; + + bool collidesWith( const QCanvasItem* ) const; + + QRect boundingRect() const; + + // is there a reason for these to be protected? Lars +//protected: + + int width() const; + int height() const; + + int leftEdge() const; + int topEdge() const; + int rightEdge() const; + int bottomEdge() const; + + int leftEdge(int nx) const; + int topEdge(int ny) const; + int rightEdge(int nx) const; + int bottomEdge(int ny) const; + QCanvasPixmap* image() const + { return images->image(frm); } + virtual QCanvasPixmap* imageAdvanced() const; + QCanvasPixmap* image(int f) const + { return images->image(f); } + virtual void advance(int stage); + +public: + void draw(QPainter& painter); + +private: +#if defined(Q_DISABLE_COPY) + QCanvasSprite( const QCanvasSprite & ); + QCanvasSprite &operator=( const QCanvasSprite & ); +#endif + void addToChunks(); + void removeFromChunks(); + void changeChunks(); + + int frm; + ushort anim_val; + uint anim_state:2; + uint anim_type:14; + bool collidesWith( const QCanvasSprite*, + const QCanvasPolygonalItem*, + const QCanvasRectangle*, + const QCanvasEllipse*, + const QCanvasText* ) const; + + friend bool qt_testCollision( const QCanvasSprite* s1, + const QCanvasSprite* s2 ); + + QCanvasPixmapArray* images; +}; + +class QPolygonalProcessor; + +class QM_EXPORT_CANVAS QCanvasPolygonalItem : public QCanvasItem +{ +public: + QCanvasPolygonalItem(QCanvas* canvas); + virtual ~QCanvasPolygonalItem(); + + bool collidesWith( const QCanvasItem* ) const; + + virtual void setPen(QPen p); + virtual void setBrush(QBrush b); + + QPen pen() const + { return pn; } + QBrush brush() const + { return br; } + + virtual QPointArray areaPoints() const=0; + virtual QPointArray areaPointsAdvanced() const; + QRect boundingRect() const; + + int rtti() const; + static int RTTI; + +protected: + void draw(QPainter &); + virtual void drawShape(QPainter &) = 0; + + bool winding() const; + void setWinding(bool); + + void invalidate(); + bool isValid() const + { return (bool)val; } + +private: + void scanPolygon( const QPointArray& pa, int winding, + QPolygonalProcessor& process ) const; + QPointArray chunks() const; + + bool collidesWith( const QCanvasSprite*, + const QCanvasPolygonalItem*, + const QCanvasRectangle*, + const QCanvasEllipse*, + const QCanvasText* ) const; + + QBrush br; + QPen pn; + uint wind:1; +}; + + +class QM_EXPORT_CANVAS QCanvasRectangle : public QCanvasPolygonalItem +{ +public: + QCanvasRectangle(QCanvas* canvas); + QCanvasRectangle(const QRect&, QCanvas* canvas); + QCanvasRectangle(int x, int y, int width, int height, QCanvas* canvas); + + ~QCanvasRectangle(); + + int width() const; + int height() const; + void setSize(int w, int h); + QSize size() const + { return QSize(w,h); } + QPointArray areaPoints() const; + QRect rect() const + { return QRect(int(x()),int(y()),w,h); } + + bool collidesWith( const QCanvasItem* ) const; + + int rtti() const; + static int RTTI; + +protected: + void drawShape(QPainter &); + QPointArray chunks() const; + +private: + bool collidesWith( const QCanvasSprite*, + const QCanvasPolygonalItem*, + const QCanvasRectangle*, + const QCanvasEllipse*, + const QCanvasText* ) const; + + int w, h; +}; + + +class QM_EXPORT_CANVAS QCanvasPolygon : public QCanvasPolygonalItem +{ +public: + QCanvasPolygon(QCanvas* canvas); + ~QCanvasPolygon(); + void setPoints(QPointArray); + QPointArray points() const; + void moveBy(double dx, double dy); + + QPointArray areaPoints() const; + + int rtti() const; + static int RTTI; + +protected: + void drawShape(QPainter &); + QPointArray poly; +}; + + +class QM_EXPORT_CANVAS QCanvasSpline : public QCanvasPolygon +{ +public: + QCanvasSpline(QCanvas* canvas); + ~QCanvasSpline(); + + void setControlPoints(QPointArray, bool closed=TRUE); + QPointArray controlPoints() const; + bool closed() const; + + int rtti() const; + static int RTTI; + +private: + void recalcPoly(); + QPointArray bez; + bool cl; +}; + + +class QM_EXPORT_CANVAS QCanvasLine : public QCanvasPolygonalItem +{ +public: + QCanvasLine(QCanvas* canvas); + ~QCanvasLine(); + void setPoints(int x1, int y1, int x2, int y2); + + QPoint startPoint() const + { return QPoint(x1,y1); } + QPoint endPoint() const + { return QPoint(x2,y2); } + + int rtti() const; + static int RTTI; + + void setPen(QPen p); + +protected: + void drawShape(QPainter &); + QPointArray areaPoints() const; + +private: + int x1,y1,x2,y2; +}; + + +class QM_EXPORT_CANVAS QCanvasEllipse : public QCanvasPolygonalItem +{ + +public: + QCanvasEllipse( QCanvas* canvas ); + QCanvasEllipse( int width, int height, QCanvas* canvas ); + QCanvasEllipse( int width, int height, int startangle, int angle, + QCanvas* canvas ); + + ~QCanvasEllipse(); + + int width() const; + int height() const; + void setSize(int w, int h); + void setAngles(int start, int length); + int angleStart() const + { return a1; } + int angleLength() const + { return a2; } + QPointArray areaPoints() const; + + bool collidesWith( const QCanvasItem* ) const; + + int rtti() const; + static int RTTI; + +protected: + void drawShape(QPainter &); + +private: + bool collidesWith( const QCanvasSprite*, + const QCanvasPolygonalItem*, + const QCanvasRectangle*, + const QCanvasEllipse*, + const QCanvasText* ) const; + int w, h; + int a1, a2; +}; + + +class QCanvasTextExtra; + +class QM_EXPORT_CANVAS QCanvasText : public QCanvasItem +{ +public: + QCanvasText(QCanvas* canvas); + QCanvasText(const QString&, QCanvas* canvas); + QCanvasText(const QString&, QFont, QCanvas* canvas); + + virtual ~QCanvasText(); + + void setText( const QString& ); + void setFont( const QFont& ); + void setColor( const QColor& ); + QString text() const; + QFont font() const; + QColor color() const; + + void moveBy(double dx, double dy); + + int textFlags() const + { return flags; } + void setTextFlags(int); + + QRect boundingRect() const; + + bool collidesWith( const QCanvasItem* ) const; + + int rtti() const; + static int RTTI; + +protected: + virtual void draw(QPainter&); + +private: +#if defined(Q_DISABLE_COPY) + QCanvasText( const QCanvasText & ); + QCanvasText &operator=( const QCanvasText & ); +#endif + void addToChunks(); + void removeFromChunks(); + void changeChunks(); + + void setRect(); + QRect brect; + QString txt; + int flags; + QFont fnt; + QColor col; + QCanvasTextExtra* extra; + + bool collidesWith( const QCanvasSprite*, + const QCanvasPolygonalItem*, + const QCanvasRectangle*, + const QCanvasEllipse*, + const QCanvasText* ) const; +}; + +#define Q_DEFINED_QCANVAS +#include "qwinexport.h" +#endif // QT_NO_CANVAS + +#endif // QCANVAS_H diff --git a/kjsembed/tools/headers/qdir.h b/kjsembed/tools/headers/qdir.h new file mode 100644 index 00000000..b5e1f5d0 --- /dev/null +++ b/kjsembed/tools/headers/qdir.h @@ -0,0 +1,246 @@ +/**************************************************************************** +** +** +** Definition of QDir class +** +** Created : 950427 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QDIR_H +#define QDIR_H + +#ifndef QT_H +#include "qglobal.h" +#include "qstrlist.h" +#include "qfileinfo.h" +#endif // QT_H + + +#ifndef QT_NO_DIR +typedef QPtrList<QFileInfo> QFileInfoList; +typedef QPtrListIterator<QFileInfo> QFileInfoListIterator; +class QStringList; +template <class T> class QDeepCopy; + + +class Q_EXPORT QDir +{ +public: + enum FilterSpec { Dirs = 0x001, + Files = 0x002, + Drives = 0x004, + NoSymLinks = 0x008, + All = 0x007, + TypeMask = 0x00F, + + Readable = 0x010, + Writable = 0x020, + Executable = 0x040, + RWEMask = 0x070, + + Modified = 0x080, + Hidden = 0x100, + System = 0x200, + AccessMask = 0x3F0, + + DefaultFilter = -1 }; + + enum SortSpec { Name = 0x00, + Time = 0x01, + Size = 0x02, + Unsorted = 0x03, + SortByMask = 0x03, + + DirsFirst = 0x04, + Reversed = 0x08, + IgnoreCase = 0x10, + DefaultSort = -1 }; + + QDir(); + QDir( const QString &path, const QString &nameFilter = QString::null, + int sortSpec = Name | IgnoreCase, int filterSpec = All ); + QDir( const QDir & ); + + virtual ~QDir(); + + QDir &operator=( const QDir & ); + QDir &operator=( const QString &path ); + + virtual void setPath( const QString &path ); + virtual QString path() const; + virtual QString absPath() const; + virtual QString canonicalPath() const; + + virtual QString dirName() const; + virtual QString filePath( const QString &fileName, + bool acceptAbsPath = TRUE ) const; + virtual QString absFilePath( const QString &fileName, + bool acceptAbsPath = TRUE ) const; + + static QString convertSeparators( const QString &pathName ); + + virtual bool cd( const QString &dirName, bool acceptAbsPath = TRUE ); + virtual bool cdUp(); + + QString nameFilter() const; + virtual void setNameFilter( const QString &nameFilter ); + FilterSpec filter() const; + virtual void setFilter( int filterSpec ); + SortSpec sorting() const; + virtual void setSorting( int sortSpec ); + + bool matchAllDirs() const; + virtual void setMatchAllDirs( bool ); + + uint count() const; + QString operator[]( int ) const; + + virtual QStrList encodedEntryList( int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + virtual QStrList encodedEntryList( const QString &nameFilter, + int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + virtual QStringList entryList( int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + virtual QStringList entryList( const QString &nameFilter, + int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + + virtual const QFileInfoList *entryInfoList( int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + virtual const QFileInfoList *entryInfoList( const QString &nameFilter, + int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + + static const QFileInfoList *drives(); + + virtual bool mkdir( const QString &dirName, + bool acceptAbsPath = TRUE ) const; + virtual bool rmdir( const QString &dirName, + bool acceptAbsPath = TRUE ) const; + + virtual bool isReadable() const; + virtual bool exists() const; + virtual bool isRoot() const; + + virtual bool isRelative() const; + virtual void convertToAbs(); + + virtual bool operator==( const QDir & ) const; + virtual bool operator!=( const QDir & ) const; + + virtual bool remove( const QString &fileName, + bool acceptAbsPath = TRUE ); + virtual bool rename( const QString &name, const QString &newName, + bool acceptAbsPaths = TRUE ); + virtual bool exists( const QString &name, + bool acceptAbsPath = TRUE ); + + static char separator(); + + static bool setCurrent( const QString &path ); + static QDir current(); + static QDir home(); + static QDir root(); + static QString currentDirPath(); + static QString homeDirPath(); + static QString rootDirPath(); + + static bool match( const QStringList &filters, const QString &fileName ); + static bool match( const QString &filter, const QString &fileName ); + static QString cleanDirPath( const QString &dirPath ); + static bool isRelativePath( const QString &path ); + void refresh() const; + +private: +#ifdef Q_OS_MAC + typedef struct FSSpec FSSpec; + static FSSpec *make_spec(const QString &); +#endif + void init(); + virtual bool readDirEntries( const QString &nameFilter, + int FilterSpec, int SortSpec ); + + static void slashify( QString & ); + + QString dPath; + QStringList *fList; + QFileInfoList *fiList; + QString nameFilt; + FilterSpec filtS; + SortSpec sortS; + uint dirty : 1; + uint allDirs : 1; + + void detach(); + friend class QDeepCopy< QDir >; +}; + + +inline QString QDir::path() const +{ + return dPath; +} + +inline QString QDir::nameFilter() const +{ + return nameFilt; +} + +inline QDir::FilterSpec QDir::filter() const +{ + return filtS; +} + +inline QDir::SortSpec QDir::sorting() const +{ + return sortS; +} + +inline bool QDir::matchAllDirs() const +{ + return allDirs; +} + +inline bool QDir::operator!=( const QDir &d ) const +{ + return !(*this == d); +} + + +struct QDirSortItem { + QString filename_cache; + QFileInfo* item; +}; + +#endif // QT_NO_DIR +#endif // QDIR_H diff --git a/kjsembed/tools/headers/qpen.h b/kjsembed/tools/headers/qpen.h new file mode 100644 index 00000000..38befc90 --- /dev/null +++ b/kjsembed/tools/headers/qpen.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** +** Definition of QPen class +** +** Created : 940112 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPEN_H +#define QPEN_H + +#ifndef QT_H +#include "qcolor.h" +#include "qshared.h" +#endif // QT_H + + +class Q_EXPORT QPen: public Qt +{ +public: + QPen(); + QPen( PenStyle ); + QPen( const QColor &color, uint width=0, PenStyle style=SolidLine ); + QPen( const QColor &cl, uint w, PenStyle s, PenCapStyle c, PenJoinStyle j); + QPen( const QPen & ); + ~QPen(); + QPen &operator=( const QPen & ); + + PenStyle style() const { return data->style; } + void setStyle( PenStyle ); + uint width() const { return data->width; } + void setWidth( uint ); + const QColor &color() const { return data->color; } + void setColor( const QColor & ); + PenCapStyle capStyle() const; + void setCapStyle( PenCapStyle ); + PenJoinStyle joinStyle() const; + void setJoinStyle( PenJoinStyle ); + + bool operator==( const QPen &p ) const; + bool operator!=( const QPen &p ) const + { return !(operator==(p)); } + +private: + friend class QPainter; +#ifdef Q_WS_WIN + friend class QFontEngineWin; +#endif + + QPen copy() const; + void detach(); + void init( const QColor &, uint, uint ); + struct QPenData : public QShared { // pen data + PenStyle style; + uint width; + QColor color; + Q_UINT16 linest; + } *data; +}; + + +/***************************************************************************** + QPen stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator<<( QDataStream &, const QPen & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QPen & ); +#endif + +#endif // QPEN_H diff --git a/kjsembed/tools/headers/qtimer.h b/kjsembed/tools/headers/qtimer.h new file mode 100644 index 00000000..b662470d --- /dev/null +++ b/kjsembed/tools/headers/qtimer.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** +** Definition of QTimer class +** +** Created : 931111 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QTIMER_H +#define QTIMER_H + +#ifndef QT_H +#include "qobject.h" +#endif // QT_H + + +class Q_EXPORT QTimer : public QObject +{ + Q_OBJECT +public: + QTimer( QObject *parent=0, const char *name=0 ); + ~QTimer(); + + bool isActive() const; + + int start( int msec, bool sshot = FALSE ); + void changeInterval( int msec ); + void stop(); + + static void singleShot( int msec, QObject *receiver, const char *member ); + + int timerId() const { return id; } + +signals: + void timeout(); + +protected: + bool event( QEvent * ); + +private: + int id; + uint single : 1; + uint nulltimer : 1; + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QTimer( const QTimer & ); + QTimer &operator=( const QTimer & ); +#endif +}; + + +inline bool QTimer::isActive() const +{ + return id >= 0; +} + + +#endif // QTIMER_H diff --git a/kjsembed/tools/xml/DO_NOT_PRUNE b/kjsembed/tools/xml/DO_NOT_PRUNE new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/kjsembed/tools/xml/DO_NOT_PRUNE |