# 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/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             = ""
