# Run qdoc from the directory that contains this file.

project     = qtwebkit
description = "Qt WebKit API Documentation"

headerdirs = $SRCDIR/WebKit/qt/Api $SRCDIR/WebKit/qt/declarative
sourcedirs = $SRCDIR/WebKit/qt/Api $SRCDIR/WebKit/qt/docs $SRCDIR/Source/JavaScriptCore/qt/api $SRCDIR/WebKit/qt/declarative
outputdir = $OUTPUT_DIR/doc/html
outputformats = HTML
sources.fileextensions  = "*.cpp *.doc *.qdoc *.h"
exampledirs = $SRCDIR/WebKit/qt/docs
imagedirs = $SRCDIR/WebKit/qt/docs

indexes = $QTDIR/doc/html/qt.index

# macros.qdocconf

macro.aring.HTML        = "&aring;"
macro.Auml.HTML         = "&Auml;"
macro.author            = "\\bold{Author:}"
macro.br.HTML           = "<br />"
macro.BR.HTML           = "<br />"
macro.aacute.HTML       = "&aacute;"
macro.eacute.HTML       = "&eacute;"
macro.iacute.HTML       = "&iacute;"
macro.gui               = "\\bold"
macro.hr.HTML           = "<hr />"
macro.key               = "\\bold"
macro.menu              = "\\bold"
macro.note              = "\\bold{Note:}"
macro.oslash.HTML       = "&oslash;"
macro.ouml.HTML         = "&ouml;"
macro.QA                = "\\e{Qt Assistant}"
macro.QD                = "\\e{Qt Designer}"
macro.QL                = "\\e{Qt Linguist}"
macro.param             = "\\e"
macro.raisedaster.HTML  = "<sup>*</sup>"
macro.reg.HTML          = "<sup>&reg;</sup>"
macro.return            = "Returns"
macro.starslash         = "\\c{*/}"
macro.uuml.HTML         = "&uuml;"
macro.mdash.HTML        = "&mdash;"

# compat.qdocconf

alias.i				= e
alias.include			= input

macro.0                         = "\\\\0"
macro.b                         = "\\\\b"
macro.n                         = "\\\\n"
macro.r                         = "\\\\r"
macro.i                         = "\\o"
macro.i11                       = "\\o{1,1}"
macro.i12                       = "\\o{1,2}"
macro.i13                       = "\\o{1,3}"
macro.i14                       = "\\o{1,4}"
macro.i15                       = "\\o{1,5}"
macro.i16                       = "\\o{1,6}"
macro.i17                       = "\\o{1,7}"
macro.i18                       = "\\o{1,8}"
macro.i19                       = "\\o{1,9}"
macro.i21                       = "\\o{2,1}"
macro.i31                       = "\\o{3,1}"
macro.i41                       = "\\o{4,1}"
macro.i51                       = "\\o{5,1}"
macro.i61                       = "\\o{6,1}"
macro.i71                       = "\\o{7,1}"
macro.i81                       = "\\o{8,1}"
macro.i91                       = "\\o{9,1}"
macro.img                       = "\\image"
macro.endquote                  = "\\endquotation"

spurious			= "Missing comma in .*" \
				  "Missing pattern .*"

# Doxygen compatibility commands

macro.see                       = "\\sa"
macro.function                  = "\\fn"

# qt-cpp-ignore.qdocconf

Cpp.ignoretokens        = QAXFACTORY_EXPORT \
                          QDESIGNER_COMPONENTS_LIBRARY \
                          QDESIGNER_EXTENSION_LIBRARY \
                          QDESIGNER_SDK_LIBRARY \
                          QDESIGNER_SHARED_LIBRARY \
                          QDESIGNER_UILIB_LIBRARY \
                          QM_EXPORT_CANVAS \
                          QM_EXPORT_DNS \
                          QM_EXPORT_DOM \
                          QM_EXPORT_FTP \
                          QM_EXPORT_HTTP \
                          QM_EXPORT_ICONVIEW \
                          QM_EXPORT_NETWORK \
                          QM_EXPORT_OPENGL \
                          QM_EXPORT_SQL \
                          QM_EXPORT_TABLE \
                          QM_EXPORT_WORKSPACE \
                          QM_EXPORT_XML \
                          QT_ASCII_CAST_WARN \
                          QT_ASCII_CAST_WARN_CONSTRUCTOR \
                          QT_BEGIN_HEADER \
                          QT_DESIGNER_STATIC \
                          QT_END_HEADER \
                          QT_FASTCALL \
                          QT_WIDGET_PLUGIN_EXPORT \
                          Q_COMPAT_EXPORT \
                          Q_CORE_EXPORT \
                          Q_EXPLICIT \
                          Q_EXPORT \
                          Q_EXPORT_CODECS_CN \
                          Q_EXPORT_CODECS_JP \
                          Q_EXPORT_CODECS_KR \
                          Q_EXPORT_PLUGIN \
                          Q_GFX_INLINE \
                          Q_GUI_EXPORT \
                          Q_GUI_EXPORT_INLINE \
                          Q_GUI_EXPORT_STYLE_CDE \
                          Q_GUI_EXPORT_STYLE_COMPACT \
                          Q_GUI_EXPORT_STYLE_MAC \
                          Q_GUI_EXPORT_STYLE_MOTIF \
                          Q_GUI_EXPORT_STYLE_MOTIFPLUS \
                          Q_GUI_EXPORT_STYLE_PLATINUM \
                          Q_GUI_EXPORT_STYLE_POCKETPC \
                          Q_GUI_EXPORT_STYLE_SGI \
                          Q_GUI_EXPORT_STYLE_WINDOWS \
                          Q_GUI_EXPORT_STYLE_WINDOWSXP \
                          QHELP_EXPORT \
                          Q_INLINE_TEMPLATE \
                          Q_INTERNAL_WIN_NO_THROW \
                          Q_NETWORK_EXPORT \
                          Q_OPENGL_EXPORT \
                          Q_OUTOFLINE_TEMPLATE \
                          Q_SQL_EXPORT \
                          Q_SVG_EXPORT \
                          Q_SCRIPT_EXPORT \
                          Q_TESTLIB_EXPORT \
                          Q_TYPENAME \
                          Q_XML_EXPORT \
                          Q_XMLSTREAM_EXPORT \
                          Q_XMLPATTERNS_EXPORT \
                          QDBUS_EXPORT \
                          QT_BEGIN_NAMESPACE \
                          QT_BEGIN_INCLUDE_NAMESPACE \
                          QT_END_NAMESPACE \
                          QT_END_INCLUDE_NAMESPACE \
                          PHONON_EXPORT \
                          EXTENSIONSYSTEM_EXPORT \
                          QWEBKIT_EXPORT
Cpp.ignoredirectives    = Q_DECLARE_HANDLE \
                          Q_DECLARE_INTERFACE \
                          Q_DECLARE_METATYPE \
                          Q_DECLARE_OPERATORS_FOR_FLAGS \
                          Q_DECLARE_PRIVATE \
                          Q_DECLARE_PUBLIC \
                          Q_DECLARE_SHARED \
                          Q_DECLARE_TR_FUNCTIONS \
                          Q_DECLARE_TYPEINFO \
                          Q_DISABLE_COPY \
                          QT_FORWARD_DECLARE_CLASS \
                          Q_DUMMY_COMPARISON_OPERATOR \
                          Q_ENUMS \
                          Q_FLAGS \
                          Q_INTERFACES \
                          __attribute__ \
                          K_DECLARE_PRIVATE \
                          PHONON_OBJECT \
                          PHONON_HEIR



HTML.style              = "" \
                          "h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }"\
                          "a:link { color: #004faf; text-decoration: none }"\
                          "a:visited { color: #672967; text-decoration: none }"\
                          "td.postheader { font-family: sans-serif }"\
                          "tr.address { font-family: sans-serif }"\
                          "body { background: #ffffff; color: black }"\
                          "table tr.odd { background: #f0f0f0; color: black; }"\
                          "table tr.even { background: #e4e4e4; color: black; }"\
                          "table.annotated th { padding: 3px; text-align: left }"\
                          "table.annotated td { padding: 3px; } "\
                          "table tr pre { padding-top: none; padding-bottom: none; padding-left: none; padding-right: none; border: none; background: none }"\
                          "tr.qt-style { background: #a2c511; color: black }"\
                          "body pre { padding: 0.2em; border: #e7e7e7 1px solid; background: #f1f1f1; color: black }"\
                          "span.preprocessor, span.preprocessor a { color: darkblue; }"\
                          "span.comment { color: darkred; font-style: italic }"\
                          "span.string,span.char { color: darkgreen; }"\
                          ".title { text-align: center }"\
                          ".subtitle { font-size: 0.8em }"\
                          ".small-subtitle { font-size: 0.65em }"

HTML.postheader         = ""

HTML.footer             = ""
