Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
b6550378
Commit
b6550378
authored
Jun 29, 2011
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.7.4-20110629
parent
de297f6d
Changes
31
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
524 additions
and
303 deletions
+524
-303
INSTALL
INSTALL
+2
-2
README
README
+2
-2
configure
configure
+1
-1
config.doc
doc/config.doc
+14
-10
starting.doc
doc/starting.doc
+1
-1
Doxyfile
qtools/Doxyfile
+13
-7
commentcnv.l
src/commentcnv.l
+30
-4
config.xml
src/config.xml
+16
-14
configoptions.cpp
src/configoptions.cpp
+9
-12
dot.cpp
src/dot.cpp
+59
-28
dot.h
src/dot.h
+12
-8
doxygen.cpp
src/doxygen.cpp
+2
-0
doxygen.css
src/doxygen.css
+30
-1
doxygen_css.h
src/doxygen_css.h
+30
-1
fortranscanner.l
src/fortranscanner.l
+66
-16
htmlgen.cpp
src/htmlgen.cpp
+63
-90
htmlgen.h
src/htmlgen.h
+3
-3
latexdocvisitor.cpp
src/latexdocvisitor.cpp
+4
-2
latexgen.cpp
src/latexgen.cpp
+9
-5
latexgen.h
src/latexgen.h
+3
-3
layout.cpp
src/layout.cpp
+4
-2
mangen.h
src/mangen.h
+3
-3
outputgen.cpp
src/outputgen.cpp
+3
-2
qhp.cpp
src/qhp.cpp
+5
-0
rtfgen.cpp
src/rtfgen.cpp
+7
-1
rtfgen.h
src/rtfgen.h
+4
-4
scanner.l
src/scanner.l
+1
-1
search.js
src/search.js
+2
-2
search_js.h
src/search_js.h
+2
-2
svgpan.js
src/svgpan.js
+62
-38
svgpan_js.h
src/svgpan_js.h
+62
-38
No files found.
INSTALL
View file @
b6550378
DOXYGEN Version 1.7.4-201106
06
DOXYGEN Version 1.7.4-201106
29
Please read the installation section of the manual
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
(http://www.doxygen.org/install.html) for instructions.
--------
--------
Dimitri van Heesch (
06
June 2011)
Dimitri van Heesch (
29
June 2011)
README
View file @
b6550378
DOXYGEN Version 1.7.4_201106
06
DOXYGEN Version 1.7.4_201106
29
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -26,4 +26,4 @@ forum.
...
@@ -26,4 +26,4 @@ forum.
Enjoy,
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
06
June 2011)
Dimitri van Heesch (dimitri@stack.nl) (
29
June 2011)
configure
View file @
b6550378
...
@@ -20,7 +20,7 @@ doxygen_version_minor=7
...
@@ -20,7 +20,7 @@ doxygen_version_minor=7
doxygen_version_revision
=
4
doxygen_version_revision
=
4
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn
=
201106
06
doxygen_version_mmn
=
201106
29
bin_dirs
=
`
echo
$PATH
|
sed
-e
"s/:/ /g"
`
bin_dirs
=
`
echo
$PATH
|
sed
-e
"s/:/ /g"
`
...
...
doc/config.doc
View file @
b6550378
...
@@ -2282,14 +2282,13 @@ install and use dot, since it yields more powerful graphs.
...
@@ -2282,14 +2282,13 @@ install and use dot, since it yields more powerful graphs.
\anchor cfg_dot_fontname
\anchor cfg_dot_fontname
<dt>\c DOT_FONTNAME <dd>
<dt>\c DOT_FONTNAME <dd>
\addindex DOT_FONTNAME
\addindex DOT_FONTNAME
By default doxygen will write a font called \c FreeSans.ttf to the output
By default doxygen will use the Helvetica font for all dot files that
directory and reference it in all dot files that doxygen generates. This
doxygen generates.
font does not include all possible unicode characters however, so when you need
When you want a differently looking font you can specify the font name
these (or just want a differently looking font) you can specify the font name
using \c DOT_FONTNAME. You need to make sure dot is able to find the font,
using \c DOT_FONTNAME. You need to make sure dot is able to find the font,
which can be done by putting it in a standard location or by setting the
which can be done by putting it in a standard location or by setting the
\c DOTFONTPATH environment variable or by setting \c DOT_FONTPATH to the
directory
\c DOTFONTPATH environment variable or by setting \c DOT_FONTPATH to the
containing the font.
directory containing the font.
\anchor cfg_dot_fontsize
\anchor cfg_dot_fontsize
<dt>\c DOT_FONTSIZE <dd>
<dt>\c DOT_FONTSIZE <dd>
...
@@ -2422,13 +2421,18 @@ The default size is 10pt.
...
@@ -2422,13 +2421,18 @@ The default size is 10pt.
The
\
c
DOT_IMAGE_FORMAT
tag
can
be
used
to
set
the
image
format
of
the
images
The
\
c
DOT_IMAGE_FORMAT
tag
can
be
used
to
set
the
image
format
of
the
images
generated
by
dot
.
Possible
values
are
svg
,
png
,
jpg
,
or
gif
.
generated
by
dot
.
Possible
values
are
svg
,
png
,
jpg
,
or
gif
.
If
left
blank
png
will
be
used
.
If
left
blank
png
will
be
used
.
\
note
If
you
choose
\
c
svg
you
need
to
set
HTML_FILE_EXTENSION
to
xhtml
in
order
to
make
the
SVG
files
visible
in
IE
9
+
(
other
browsers
do
not
have
this
requirement
).
\
anchor
cfg_interactive_svg
\
anchor
cfg_interactive_svg
<
dt
>\
c
INTERACTIVE_SVG
<
dt
>\
c
INTERACTIVE_SVG
If
DOT_IMAGE_FORMAT
is
set
to
svg
,
then
this
option
can
be
set
to
YES
to
If
DOT_IMAGE_FORMAT
is
set
to
svg
,
then
this
option
can
be
set
to
YES
to
enable
generation
of
interactive
SVG
images
that
allow
zooming
and
panning
.
enable
generation
of
interactive
SVG
images
that
allow
zooming
and
panning
.
Note
that
this
requires
a
modern
browser
.
For
Internet
Explorer
you
will
need
Note
that
this
requires
a
modern
browser
other
than
Internet
Explorer
.
at
least
version
9.
Tested
and
working
are
Firefox
,
Chrome
,
Safari
,
and
Opera
.
\
note
For
IE
9
+
you
need
to
set
\
c
HTML_FILE_EXTENSION
to
xhtml
in
order
to
make
the
SVG
files
visible
.
Older
versions
of
IE
do
not
have
SVG
support
.
\
anchor
cfg_dot_path
\
anchor
cfg_dot_path
<
dt
>\
c
DOT_PATH
<
dd
>
<
dt
>\
c
DOT_PATH
<
dd
>
...
...
doc/starting.doc
View file @
b6550378
...
@@ -204,7 +204,7 @@ In this case the \c Makefile will only contain a target to build
...
@@ -204,7 +204,7 @@ In this case the \c Makefile will only contain a target to build
\addindex RTF
\addindex RTF
Doxygen combines the RTF output to a single file called refman.rtf. This
Doxygen combines the RTF output to a single file called refman.rtf. This
file is optimized for importing into the Microsoft Word. Certain information
file is optimized for importing into the Microsoft Word. Certain information
is encoded using
field
. To show the actual value you need to
is encoded using
so called fields
. To show the actual value you need to
select all (Edit - select all) and then toggle fields (right click and select
select all (Edit - select all) and then toggle fields (right click and select
the option from the drop down menu).
the option from the drop down menu).
...
...
qtools/Doxyfile
View file @
b6550378
# Doxyfile 1.7.
2
# Doxyfile 1.7.
4
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Project related configuration options
# Project related configuration options
...
@@ -6,6 +6,8 @@
...
@@ -6,6 +6,8 @@
DOXYFILE_ENCODING = UTF-8
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = Qtools
PROJECT_NAME = Qtools
PROJECT_NUMBER =
PROJECT_NUMBER =
PROJECT_BRIEF =
PROJECT_LOGO =
OUTPUT_DIRECTORY = ../qtools_docs
OUTPUT_DIRECTORY = ../qtools_docs
CREATE_SUBDIRS = NO
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
OUTPUT_LANGUAGE = English
...
@@ -36,6 +38,7 @@ SIP_SUPPORT = NO
...
@@ -36,6 +38,7 @@ SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
TYPEDEF_HIDES_STRUCT = NO
TYPEDEF_HIDES_STRUCT = NO
SYMBOL_CACHE_SIZE = 0
SYMBOL_CACHE_SIZE = 0
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
...
@@ -128,16 +131,17 @@ IGNORE_PREFIX = Q
...
@@ -128,16 +131,17 @@ IGNORE_PREFIX = Q
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
GENERATE_HTML = YES
GENERATE_HTML = YES
HTML_OUTPUT =
HTML_OUTPUT =
HTML_FILE_EXTENSION = .html
HTML_FILE_EXTENSION = .
x
html
HTML_HEADER =
HTML_HEADER =
HTML_FOOTER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_STYLESHEET =
HTML_EXTRA_FILES =
HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80
HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = YES
HTML_TIMESTAMP = YES
HTML_ALIGN_MEMBERS = YES
HTML_ALIGN_MEMBERS = YES
HTML_DYNAMIC_SECTIONS =
NO
HTML_DYNAMIC_SECTIONS =
YES
GENERATE_DOCSET = YES
GENERATE_DOCSET = YES
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
DOCSET_BUNDLE_ID = org.doxygen.Project
...
@@ -171,7 +175,7 @@ FORMULA_TRANSPARENT = YES
...
@@ -171,7 +175,7 @@ FORMULA_TRANSPARENT = YES
USE_MATHJAX = NO
USE_MATHJAX = NO
MATHJAX_RELPATH = http://www.mathjax.org/mathjax
MATHJAX_RELPATH = http://www.mathjax.org/mathjax
SEARCHENGINE = YES
SEARCHENGINE = YES
SERVER_BASED_SEARCH =
YES
SERVER_BASED_SEARCH =
NO
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
...
@@ -183,6 +187,7 @@ COMPACT_LATEX = NO
...
@@ -183,6 +187,7 @@ COMPACT_LATEX = NO
PAPER_TYPE = a4wide
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
EXTRA_PACKAGES =
LATEX_HEADER =
LATEX_HEADER =
LATEX_FOOTER =
PDF_HYPERLINKS = YES
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
USE_PDFLATEX = YES
LATEX_BATCHMODE = NO
LATEX_BATCHMODE = NO
...
@@ -249,9 +254,9 @@ PERL_PATH = /usr/bin/perl
...
@@ -249,9 +254,9 @@ PERL_PATH = /usr/bin/perl
CLASS_DIAGRAMS = NO
CLASS_DIAGRAMS = NO
MSCGEN_PATH =
MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT =
NO
HAVE_DOT =
YES
DOT_NUM_THREADS = 0
DOT_NUM_THREADS = 0
DOT_FONTNAME =
FreeSans.ttf
DOT_FONTNAME =
DOT_FONTSIZE = 10
DOT_FONTSIZE = 10
DOT_FONTPATH =
DOT_FONTPATH =
CLASS_GRAPH = YES
CLASS_GRAPH = YES
...
@@ -265,7 +270,8 @@ CALL_GRAPH = NO
...
@@ -265,7 +270,8 @@ CALL_GRAPH = NO
CALLER_GRAPH = NO
CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
DOT_IMAGE_FORMAT = svg
INTERACTIVE_SVG = YES
DOT_PATH =
DOT_PATH =
DOTFILE_DIRS =
DOTFILE_DIRS =
MSCFILE_DIRS =
MSCFILE_DIRS =
...
...
src/commentcnv.l
View file @
b6550378
...
@@ -64,6 +64,8 @@ static QCString g_blockName;
...
@@ -64,6 +64,8 @@ static QCString g_blockName;
static int g_lastCommentContext;
static int g_lastCommentContext;
static bool g_inSpecialComment;
static bool g_inSpecialComment;
static bool g_inRoseComment;
static bool g_inRoseComment;
static int g_stringContext;
static int g_charContext;
static int g_javaBlock;
static int g_javaBlock;
static bool g_specialComment;
static bool g_specialComment;
...
@@ -310,10 +312,12 @@ void replaceComment(int offset);
...
@@ -310,10 +312,12 @@ void replaceComment(int offset);
}
}
<Scan>"\"" { /* start of a string */
<Scan>"\"" { /* start of a string */
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
g_stringContext = YY_START;
BEGIN(SkipString);
BEGIN(SkipString);
}
}
<Scan>' {
<Scan>' {
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
g_charContext = YY_START;
BEGIN(SkipChar);
BEGIN(SkipChar);
}
}
<Scan>\n { /* new line */
<Scan>\n { /* new line */
...
@@ -506,7 +510,7 @@ void replaceComment(int offset);
...
@@ -506,7 +510,7 @@ void replaceComment(int offset);
}
}
<SkipString>"\"" { /* end of string */
<SkipString>"\"" { /* end of string */
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
BEGIN(
Scan
);
BEGIN(
g_stringContext
);
}
}
<SkipString>. { /* any other string character */
<SkipString>. { /* any other string character */
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
...
@@ -519,7 +523,7 @@ void replaceComment(int offset);
...
@@ -519,7 +523,7 @@ void replaceComment(int offset);
}
}
<SkipChar>' { /* end of character literal */
<SkipChar>' { /* end of character literal */
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
BEGIN(
Scan
);
BEGIN(
g_charContext
);
}
}
<SkipChar>. { /* any other string character */
<SkipChar>. { /* any other string character */
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
...
@@ -528,10 +532,10 @@ void replaceComment(int offset);
...
@@ -528,10 +532,10 @@ void replaceComment(int offset);
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
}
}
<CComment>[^\\!@*\n{
]*
{ /* anything that is not a '*' or command */
<CComment>[^\\!@*\n{
\"]*
{ /* anything that is not a '*' or command */
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
}
}
<CComment>"*"+[^*/\\@\n
]*
{ /* stars without slashes */
<CComment>"*"+[^*/\\@\n
{\"]*
{ /* stars without slashes */
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
}
}
<CComment>"\"\"\"" { /* end of Python docstring */
<CComment>"\"\"\"" { /* end of Python docstring */
...
@@ -593,6 +597,16 @@ void replaceComment(int offset);
...
@@ -593,6 +597,16 @@ void replaceComment(int offset);
BEGIN(Scan);
BEGIN(Scan);
}
}
}
}
<CComment>"'" {
g_charContext = YY_START;
copyToOutput(yytext,yyleng);
BEGIN(SkipChar);
}
<CComment>"\"" {
g_stringContext = YY_START;
copyToOutput(yytext,yyleng);
BEGIN(SkipString);
}
<CComment>. {
<CComment>. {
copyToOutput(yytext,yyleng);
copyToOutput(yytext,yyleng);
}
}
...
@@ -734,6 +748,18 @@ void replaceComment(int offset);
...
@@ -734,6 +748,18 @@ void replaceComment(int offset);
}
}
<ReadAliasArgs>^[ \t]*"//"[/!]/[^\n]+ { // skip leading special comments (see bug 618079)
<ReadAliasArgs>^[ \t]*"//"[/!]/[^\n]+ { // skip leading special comments (see bug 618079)
}
}
<ReadAliasArgs>"*/" { // oops, end of comment in the middle of an alias?
if (g_lang==SrcLangExt_Python)
{
REJECT;
}
else // abort the alias, restart scanning
{
copyToOutput(g_aliasString,g_aliasString.length());
copyToOutput(yytext,yyleng);
BEGIN(Scan);
}
}
<ReadAliasArgs>[^{}\n\\\*]+ {
<ReadAliasArgs>[^{}\n\\\*]+ {
g_aliasString+=yytext;
g_aliasString+=yytext;
g_lastEscaped=FALSE;
g_lastEscaped=FALSE;
...
...
src/config.xml
View file @
b6550378
...
@@ -1405,23 +1405,21 @@ explicitly to a value larger than 0 to get control over the balance
...
@@ -1405,23 +1405,21 @@ explicitly to a value larger than 0 to get control over the balance
between CPU load and processing speed.
between CPU load and processing speed.
'
defval=
'0'
minval=
'0'
maxval=
'32'
/>
'
defval=
'0'
minval=
'0'
maxval=
'32'
/>
<option
type=
'string'
id=
'DOT_FONTNAME'
format=
'string'
docs=
'
<option
type=
'string'
id=
'DOT_FONTNAME'
format=
'string'
docs=
'
By default doxygen will write a font called Helvetica to the output
By default doxygen will use the Helvetica font for all dot files that
directory and reference it in all dot files that doxygen generates.
doxygen generates. When you want a differently looking font you can specify
When you want a differently looking font you can specify the font name
the font name using DOT_FONTNAME. You need to make sure dot is able to find
using DOT_FONTNAME. You need to make sure dot is able to find the font,
the font, which can be done by putting it in a standard location or by setting
which can be done by putting it in a standard location or by setting the
the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
directory containing the font.
containing the font.
'
defval=
'Helvetica'
depends=
'HAVE_DOT'
/>
'
defval=
'Helvetica'
depends=
'HAVE_DOT'
/>
<option
type=
'int'
id=
'DOT_FONTSIZE'
docs=
'
<option
type=
'int'
id=
'DOT_FONTSIZE'
docs=
'
The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
The default size is 10pt.
The default size is 10pt.
'
minval=
'4'
maxval=
'24'
defval=
'10'
depends=
'HAVE_DOT'
/>
'
minval=
'4'
maxval=
'24'
defval=
'10'
depends=
'HAVE_DOT'
/>
<option
type=
'string'
id=
'DOT_FONTPATH'
format=
'string'
docs=
'
<option
type=
'string'
id=
'DOT_FONTPATH'
format=
'string'
docs=
'
By default doxygen will tell dot to use the output directory to look for the
By default doxygen will tell dot to use the Helvetica font.
FreeSans.ttf font (which doxygen will put there itself). If you specify a
If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
different font using DOT_FONTNAME you can set the path where dot
set the path where dot can find it.
can find it using this tag.
'
defval=
''
depends=
'HAVE_DOT'
/>
'
defval=
''
depends=
'HAVE_DOT'
/>
<option
type=
'bool'
id=
'CLASS_GRAPH'
docs=
'
<option
type=
'bool'
id=
'CLASS_GRAPH'
docs=
'
If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
...
@@ -1487,7 +1485,9 @@ relations between the files in the directories.
...
@@ -1487,7 +1485,9 @@ relations between the files in the directories.
<option
type=
'enum'
id=
'DOT_IMAGE_FORMAT'
defval=
'png'
docs=
'
<option
type=
'enum'
id=
'DOT_IMAGE_FORMAT'
defval=
'png'
docs=
'
The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
generated by dot. Possible values are svg, png, jpg, or gif.
generated by dot. Possible values are svg, png, jpg, or gif.
If left blank png will be used.
If left blank png will be used. If you choose svg you need to set
HTML_FILE_EXTENSION to xhtml in order to make the SVG files
visible in IE 9+ (other browsers do not have this requirement).
'
depends=
'HAVE_DOT'
>
'
depends=
'HAVE_DOT'
>
<value
name=
'png'
/>
<value
name=
'png'
/>
<value
name=
'jpg'
/>
<value
name=
'jpg'
/>
...
@@ -1497,8 +1497,10 @@ If left blank png will be used.
...
@@ -1497,8 +1497,10 @@ If left blank png will be used.
<option
type=
'bool'
id=
'INTERACTIVE_SVG'
doc=
'
<option
type=
'bool'
id=
'INTERACTIVE_SVG'
doc=
'
If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
enable generation of interactive SVG images that allow zooming and panning.
enable generation of interactive SVG images that allow zooming and panning.
Note that this requires a modern browser. For Internet Explorer you will need
Note that this requires a modern browser other than Internet Explorer.
at least version 9.
Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
visible. Older versions of IE do not have SVG support.
'
defval=
'0'
depends=
'HAVE_DOT'
/>
'
defval=
'0'
depends=
'HAVE_DOT'
/>
<option
type=
'string'
id=
'DOT_PATH'
format=
'dir'
docs=
'
<option
type=
'string'
id=
'DOT_PATH'
format=
'dir'
docs=
'
The tag DOT_PATH can be used to specify the path where the dot tool can be
The tag DOT_PATH can be used to specify the path where the dot tool can be
...
...
src/configoptions.cpp
View file @
b6550378
...
@@ -2123,13 +2123,11 @@ void addConfigOptions(Config *cfg)
...
@@ -2123,13 +2123,11 @@ void addConfigOptions(Config *cfg)
//----
//----
cs
=
cfg
->
addString
(
cs
=
cfg
->
addString
(
"DOT_FONTNAME"
,
"DOT_FONTNAME"
,
"By default doxygen will write a font called Helvetica to the output
\n
"
"By default doxygen will use the Helvetica font for all dot files that doxygen generates. When you want a differently looking font you can specify
\n
"
"directory and reference it in all dot files that doxygen generates.
\n
"
"the font name using DOT_FONTNAME. You need to make sure dot is able to find
\n
"
"When you want a differently looking font you can specify the font name
\n
"
"the font, which can be done by putting it in a standard location or by setting
\n
"
"using DOT_FONTNAME. You need to make sure dot is able to find the font,
\n
"
"the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
\n
"
"which can be done by putting it in a standard location or by setting the
\n
"
"directory containing the font."
"DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
\n
"
"containing the font."
);
);
cs
->
setDefaultValue
(
"Helvetica"
);
cs
->
setDefaultValue
(
"Helvetica"
);
cs
->
addDependency
(
"HAVE_DOT"
);
cs
->
addDependency
(
"HAVE_DOT"
);
...
@@ -2144,10 +2142,8 @@ void addConfigOptions(Config *cfg)
...
@@ -2144,10 +2142,8 @@ void addConfigOptions(Config *cfg)
//----
//----
cs
=
cfg
->
addString
(
cs
=
cfg
->
addString
(
"DOT_FONTPATH"
,
"DOT_FONTPATH"
,
"By default doxygen will tell dot to use the output directory to look for the
\n
"
"By default doxygen will tell dot to use the Helvetica font.
\n
"
"FreeSans.ttf font (which doxygen will put there itself). If you specify a
\n
"
"If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to set the path where dot can find it."
"different font using DOT_FONTNAME you can set the path where dot
\n
"
"can find it using this tag."
);
);
cs
->
addDependency
(
"HAVE_DOT"
);
cs
->
addDependency
(
"HAVE_DOT"
);
//----
//----
...
@@ -2260,7 +2256,8 @@ void addConfigOptions(Config *cfg)
...
@@ -2260,7 +2256,8 @@ void addConfigOptions(Config *cfg)
"DOT_IMAGE_FORMAT"
,
"DOT_IMAGE_FORMAT"
,
"The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
\n
"
"The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
\n
"
"generated by dot. Possible values are svg, png, jpg, or gif.
\n
"
"generated by dot. Possible values are svg, png, jpg, or gif.
\n
"
"If left blank png will be used."
,
"If left blank png will be used. If you choose svg you need to set
\n
"
"HTML_FILE_EXTENSION to xhtml in order to make the SVG files visible in IE 9+ (other browsers do not have this requirement)."
,
"png"
"png"
);
);
ce
->
addValue
(
"png"
);
ce
->
addValue
(
"png"
);
...
...
src/dot.cpp
View file @
b6550378
This diff is collapsed.
Click to expand it.
src/dot.h
View file @
b6550378
...
@@ -166,7 +166,7 @@ class DotClassGraph
...
@@ -166,7 +166,7 @@ class DotClassGraph
bool
isTooBig
()
const
;
bool
isTooBig
()
const
;
QCString
writeGraph
(
FTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
QCString
writeGraph
(
FTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
const
char
*
fileName
,
const
char
*
relPath
,
const
char
*
fileName
,
const
char
*
relPath
,
bool
TBRank
=
TRUE
,
bool
imageMap
=
TRUE
)
const
;
bool
TBRank
=
TRUE
,
bool
imageMap
=
TRUE
,
int
graphId
=-
1
)
const
;
void
writeXML
(
FTextStream
&
t
);
void
writeXML
(
FTextStream
&
t
);
void
writeDEF
(
FTextStream
&
t
);
void
writeDEF
(
FTextStream
&
t
);
...
@@ -196,7 +196,7 @@ class DotInclDepGraph
...
@@ -196,7 +196,7 @@ class DotInclDepGraph
~
DotInclDepGraph
();
~
DotInclDepGraph
();
QCString
writeGraph
(
FTextStream
&
t
,
GraphOutputFormat
f
,
QCString
writeGraph
(
FTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
const
char
*
fileName
,
const
char
*
relPath
,
const
char
*
path
,
const
char
*
fileName
,
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
)
const
;
bool
writeImageMap
=
TRUE
,
int
graphId
=-
1
)
const
;
bool
isTrivial
()
const
;
bool
isTrivial
()
const
;
bool
isTooBig
()
const
;
bool
isTooBig
()
const
;
QCString
diskName
()
const
;
QCString
diskName
()
const
;
...
@@ -223,7 +223,8 @@ class DotCallGraph
...
@@ -223,7 +223,8 @@ class DotCallGraph
~
DotCallGraph
();
~
DotCallGraph
();
QCString
writeGraph
(
FTextStream
&
t
,
GraphOutputFormat
f
,
QCString
writeGraph
(
FTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
const
char
*
fileName
,
const
char
*
path
,
const
char
*
fileName
,
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
)
const
;
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
,
int
graphId
=-
1
)
const
;
void
buildGraph
(
DotNode
*
n
,
MemberDef
*
md
,
int
distance
);
void
buildGraph
(
DotNode
*
n
,
MemberDef
*
md
,
int
distance
);
bool
isTrivial
()
const
;
bool
isTrivial
()
const
;
bool
isTooBig
()
const
;
bool
isTooBig
()
const
;
...
@@ -253,7 +254,8 @@ class DotDirDeps
...
@@ -253,7 +254,8 @@ class DotDirDeps
const
char
*
path
,
const
char
*
path
,
const
char
*
fileName
,
const
char
*
fileName
,
const
char
*
relPath
,
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
)
const
;
bool
writeImageMap
=
TRUE
,
int
graphId
=-
1
)
const
;
private
:
private
:
DirDef
*
m_dir
;
DirDef
*
m_dir
;
};
};
...
@@ -299,7 +301,7 @@ class DotGroupCollaboration
...
@@ -299,7 +301,7 @@ class DotGroupCollaboration
~
DotGroupCollaboration
();
~
DotGroupCollaboration
();
QCString
writeGraph
(
FTextStream
&
t
,
GraphOutputFormat
format
,
QCString
writeGraph
(
FTextStream
&
t
,
GraphOutputFormat
format
,
const
char
*
path
,
const
char
*
fileName
,
const
char
*
relPath
,
const
char
*
path
,
const
char
*
fileName
,
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
)
const
;
bool
writeImageMap
=
TRUE
,
int
graphId
=-
1
)
const
;
void
buildGraph
(
GroupDef
*
gd
);
void
buildGraph
(
GroupDef
*
gd
);
bool
isTrivial
()
const
;
bool
isTrivial
()
const
;
private
:
private
:
...
@@ -368,13 +370,15 @@ class DotFilePatcher
...
@@ -368,13 +370,15 @@ class DotFilePatcher
QCString
context
;
QCString
context
;
QCString
label
;
QCString
label
;
bool
zoomable
;
bool
zoomable
;
int
graphId
;
};
};
DotFilePatcher
(
const
char
*
patchFile
);
DotFilePatcher
(
const
char
*
patchFile
);
int
addMap
(
const
QCString
&
mapFile
,
const
QCString
&
relPath
,
int
addMap
(
const
QCString
&
mapFile
,
const
QCString
&
relPath
,
bool
urlOnly
,
const
QCString
&
context
,
const
QCString
&
label
);
bool
urlOnly
,
const
QCString
&
context
,
const
QCString
&
label
);
int
addFigure
(
const
QCString
&
baseName
,
int
addFigure
(
const
QCString
&
baseName
,
const
QCString
&
figureName
,
bool
heightCheck
);
const
QCString
&
figureName
,
bool
heightCheck
);
int
addSVGConversion
(
const
QCString
&
relPath
,
bool
urlOnly
,
const
QCString
&
context
,
bool
zoomable
);
int
addSVGConversion
(
const
QCString
&
relPath
,
bool
urlOnly
,
const
QCString
&
context
,
bool
zoomable
,
int
graphId
);
int
addSVGObject
(
const
QCString
&
baseName
,
const
QCString
&
figureName
,
int
addSVGObject
(
const
QCString
&
baseName
,
const
QCString
&
figureName
,
const
QCString
&
relPath
);
const
QCString
&
relPath
);
bool
run
();
bool
run
();
...
@@ -421,7 +425,7 @@ class DotManager
...
@@ -421,7 +425,7 @@ class DotManager
int
addFigure
(
const
QCString
&
file
,
const
QCString
&
baseName
,
int
addFigure
(
const
QCString
&
file
,
const
QCString
&
baseName
,
const
QCString
&
figureName
,
bool
heightCheck
);
const
QCString
&
figureName
,
bool
heightCheck
);
int
addSVGConversion
(
const
QCString
&
file
,
const
QCString
&
relPath
,
int
addSVGConversion
(
const
QCString
&
file
,
const
QCString
&
relPath
,
bool
urlOnly
,
const
QCString
&
context
,
bool
zoomable
);
bool
urlOnly
,
const
QCString
&
context
,
bool
zoomable
,
int
graphId
);
int
addSVGObject
(
const
QCString
&
file
,
const
QCString
&
baseName
,
int
addSVGObject
(
const
QCString
&
file
,
const
QCString
&
baseName
,
const
QCString
&
figureNAme
,
const
QCString
&
relPath
);
const
QCString
&
figureNAme
,
const
QCString
&
relPath
);
bool
run
();
bool
run
();
...
@@ -445,7 +449,7 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
...
@@ -445,7 +449,7 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
void
writeDotImageMapFromFile
(
FTextStream
&
t
,
void
writeDotImageMapFromFile
(
FTextStream
&
t
,
const
QCString
&
inFile
,
const
QCString
&
outDir
,
const
QCString
&
inFile
,
const
QCString
&
outDir
,
const
QCString
&
relPath
,
const
QCString
&
baseName
,
const
QCString
&
relPath
,
const
QCString
&
baseName
,
const
QCString
&
context
);
const
QCString
&
context
,
int
graphId
=-
1
);
void
writeDotDirDepGraph
(
FTextStream
&
t
,
DirDef
*
dd
);
void
writeDotDirDepGraph
(
FTextStream
&
t
,
DirDef
*
dd
);
...
...
src/doxygen.cpp
View file @
b6550378
...
@@ -9261,6 +9261,8 @@ extern void commentScanTest();
...
@@ -9261,6 +9261,8 @@ extern void commentScanTest();
void
initDoxygen
()
void
initDoxygen
()
{
{
const
char
*
lang
=
portable_getenv
(
"LC_ALL"
);
if
(
lang
)
portable_setenv
(
"LANG"
,
lang
);
setlocale
(
LC_ALL
,
""
);
setlocale
(
LC_ALL
,
""
);
setlocale
(
LC_CTYPE
,
"C"
);
// to get isspace(0xA0)==0, needed for UTF-8
setlocale
(
LC_CTYPE
,
"C"
);
// to get isspace(0xA0)==0, needed for UTF-8
setlocale
(
LC_NUMERIC
,
"C"
);
setlocale
(
LC_NUMERIC
,
"C"
);
...
...
src/doxygen.css
View file @
b6550378
...
@@ -181,7 +181,7 @@ div.groupText {
...
@@ -181,7 +181,7 @@ div.groupText {
}
}
body
{
body
{
background
:
white
;
background
-color
:
white
;
color
:
black
;
color
:
black
;
margin
:
0
;
margin
:
0
;
}
}
...
@@ -846,3 +846,32 @@ div.zoom
...
@@ -846,3 +846,32 @@ div.zoom
border
:
1px
solid
#
#A0
;
border
:
1px
solid
#
#A0
;
}
}
@media
print
{
#top
{
display
:
none
;
}
#side-nav
{
display
:
none
;
}
#nav-path
{
display
:
none
;
}
body
{
overflow
:
visible
;
}
h1
,
h2
,
h3
,
h4
,
h5
,
h6
{
page-break-after
:
avoid
;
}
.summary
{
display
:
none
;
}
.memitem
{
page-break-inside
:
avoid
;
}
#doc-content
{
margin-left
:
0
!important
;
height
:
auto
!important
;
width
:
auto
!important
;
overflow
:
inherit
;
display
:
inline
;
}
pre
.fragment
{
overflow
:
visible
;
text-wrap
:
unrestricted
;
white-space
:
-moz-pre-wrap
;
/* Moz */
white-space
:
-pre-wrap
;
/* Opera 4-6 */
white-space
:
-o-pre-wrap
;
/* Opera 7 */
white-space
:
pre-wrap
;
/* CSS3 */
word-wrap
:
break-word
;
/* IE 5.5+ */
}
}
src/doxygen_css.h
View file @
b6550378
...
@@ -181,7 +181,7 @@
...
@@ -181,7 +181,7 @@
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
"body {
\n
"
"body {
\n
"
" background: white;
\n
"
" background
-color
: white;
\n
"
" color: black;
\n
"
" color: black;
\n
"
" margin: 0;
\n
"
" margin: 0;
\n
"
"}
\n
"
"}
\n
"
...
@@ -846,3 +846,32 @@
...
@@ -846,3 +846,32 @@
" border: 1px solid ##A0;
\n
"
" border: 1px solid ##A0;
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
"@media print
\n
"
"{
\n
"
" #top { display: none; }
\n
"
" #side-nav { display: none; }
\n
"
" #nav-path { display: none; }
\n
"
" body { overflow:visible; }
\n
"
" h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
\n
"
" .summary { display: none; }
\n
"
" .memitem { page-break-inside: avoid; }
\n
"
" #doc-content
\n
"
" {
\n
"
" margin-left:0 !important;
\n
"
" height:auto !important;
\n
"
" width:auto !important;
\n
"
" overflow:inherit;
\n
"
" display:inline;
\n
"
" }
\n
"
" pre.fragment
\n
"
" {
\n
"
" overflow: visible;
\n
"
" text-wrap: unrestricted;
\n
"
" white-space: -moz-pre-wrap; /* Moz */
\n
"
" white-space: -pre-wrap; /* Opera 4-6 */
\n
"
" white-space: -o-pre-wrap; /* Opera 7 */
\n
"
" white-space: pre-wrap; /* CSS3 */
\n
"
" word-wrap: break-word; /* IE 5.5+ */
\n
"
" }
\n
"
"}
\n
"
"
\n
"
src/fortranscanner.l
View file @
b6550378
...
@@ -748,19 +748,66 @@ private {
...
@@ -748,19 +748,66 @@ private {
addCurrentEntry();
addCurrentEntry();
}
}
else if (!argType.isEmpty())
else if (!argType.isEmpty())
{ // de
k
laration of parameter list: add type for corr. parameter
{ // de
c
laration of parameter list: add type for corr. parameter
parameter = getParameter(argName);
parameter = getParameter(argName);
if (parameter) {
if (parameter)
{
v_type= V_PARAMETER;
v_type= V_PARAMETER;
if (!argType.isNull())
if (!argType.isNull()) parameter->type=argType.stripWhiteSpace();
parameter->type=argType.stripWhiteSpace();
if (!docBlock.isNull())
if (!docBlock.isNull())
{
{
parameter->docs += "\n";
parameter->docs += "\n";
parameter->docs += docBlock;
parameter->docs += docBlock;
}
}
}
}
// save, it may be function return type
// save, it may be function return type
if (parameter)
{
modifiers[current_root][name.lower()].type = argType;
modifiers[current_root][name.lower()].type = argType;
}
else
{
if ((current_root->name.lower() == argName.lower()) ||
(modifiers[current_root->parent()][current_root->name.lower()].returnName == argName.lower()))
{
int strt = current_root->type.find("function");
QString lft;
QString rght;
if (strt != -1)
{
lft = "";
rght = "";
if (strt != 0) lft = current_root->type.left(strt).stripWhiteSpace();
if ((current_root->type.length() - strt - strlen("function"))!= 0)
{
rght = current_root->type.right(current_root->type.length() - strt - strlen("function")).stripWhiteSpace();
}
current_root->type = lft;
if (rght.length() > 0)
{
if (current_root->type.length() > 0) current_root->type += " ";
current_root->type += rght;
}
if (argType.stripWhiteSpace().length() > 0)
{
if (current_root->type.length() > 0) current_root->type += " ";
current_root->type += argType.stripWhiteSpace();
}
if (current_root->type.length() > 0) current_root->type += " ";
current_root->type += "function";
}
else
{
current_root->type += " " + argType.stripWhiteSpace();
}
current_root->type = current_root->type.stripWhiteSpace();
modifiers[current_root][name.lower()].type = current_root->type;
}
else
{
modifiers[current_root][name.lower()].type = argType;
}
}
// any accumulated doc for argument should be emptied,
// any accumulated doc for argument should be emptied,
// because it is handled other way and this doc can be
// because it is handled other way and this doc can be
// unexpectedly passed to the next member.
// unexpectedly passed to the next member.
...
@@ -784,12 +831,12 @@ private {
...
@@ -784,12 +831,12 @@ private {
BEGIN(Initialization);
BEGIN(Initialization);
}
}
<Variable>"\n" { currentModifiers = SymbolModifiers();
<Variable>"\n" { currentModifiers = SymbolModifiers();
yy_pop_state(); // end variable de
k
laration list
yy_pop_state(); // end variable de
c
laration list
newLine();
newLine();
docBlock.resize(0);
docBlock.resize(0);
}
}
<Variable>";".*"\n" { currentModifiers = SymbolModifiers();
<Variable>";".*"\n" { currentModifiers = SymbolModifiers();
yy_pop_state(); // end variable de
k
laration list
yy_pop_state(); // end variable de
c
laration list
docBlock.resize(0);
docBlock.resize(0);
inputStringSemi =(const char*)(yytext+1);
inputStringSemi =(const char*)(yytext+1);
pushBuffer(inputStringSemi);
pushBuffer(inputStringSemi);
...
@@ -856,12 +903,15 @@ private {
...
@@ -856,12 +903,15 @@ private {
<SubprogPrefix>{BS}{SUBPROG}{BS_} {
<SubprogPrefix>{BS}{SUBPROG}{BS_} {
// Fortran subroutine or function found
// Fortran subroutine or function found
addSubprogram(yytext);
result=yytext;
result=result.stripWhiteSpace();
addSubprogram(result);
BEGIN(Subprog);
BEGIN(Subprog);
}
}
<Start,ModuleBody,SubprogBody,InterfaceBody,ModuleBodyContains,SubprogBodyContains>^{BS}({PREFIX}{BS_})?{SUBPROG}{BS_} {
<Start,ModuleBody,SubprogBody,InterfaceBody,ModuleBodyContains,SubprogBodyContains>^{BS}({PREFIX}{BS_})?{SUBPROG}{BS_} {
// Fortran subroutine or function found
// Fortran subroutine or function found
v_type = V_IGNORE;
if (ifType == IF_ABSTRACT || ifType == IF_SPECIFIC)
if (ifType == IF_ABSTRACT || ifType == IF_SPECIFIC)
{
{
addInterface("$interface$", ifType);
addInterface("$interface$", ifType);
...
@@ -1820,7 +1870,8 @@ static void addSubprogram(const char *text)
...
@@ -1820,7 +1870,8 @@ static void addSubprogram(const char *text)
//fprintf(stderr,"1=========> got subprog, type: %s\n",text);
//fprintf(stderr,"1=========> got subprog, type: %s\n",text);
current->section = Entry::FUNCTION_SEC ;
current->section = Entry::FUNCTION_SEC ;
QCString subtype = text; subtype=subtype.lower().stripWhiteSpace();
QCString subtype = text; subtype=subtype.lower().stripWhiteSpace();
if (!current->type) current->type = subtype;
current->type += " " + subtype;
current->type = current->type.stripWhiteSpace();
current->fileName = yyFileName;
current->fileName = yyFileName;
current->bodyLine = yyLineNr; // used for source reference
current->bodyLine = yyLineNr; // used for source reference
current->startLine = -1; // ??? what is startLine for?
current->startLine = -1; // ??? what is startLine for?
...
@@ -2062,8 +2113,7 @@ void FortranLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf,
...
@@ -2062,8 +2113,7 @@ void FortranLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf,
bool FortranLanguageScanner::needsPreprocessing(const QCString &extension)
bool FortranLanguageScanner::needsPreprocessing(const QCString &extension)
{
{
return !(extension==".f"||extension==".f90"||
return extension!=extension.lower(); // use preprocessor only for upper case extensions
extension==".f95"||extension==".f03");
}
}
void FortranLanguageScanner::resetCodeParserState()
void FortranLanguageScanner::resetCodeParserState()
{
{
...
...
src/htmlgen.cpp
View file @
b6550378
...
@@ -1109,6 +1109,58 @@ void HtmlGenerator::init()
...
@@ -1109,6 +1109,58 @@ void HtmlGenerator::init()
t
<<
svgpan_script
;
t
<<
svgpan_script
;
}
}
}
}
if
(
Config_getBool
(
"HTML_DYNAMIC_SECTIONS"
))
{
QFile
f
(
dname
+
"/dynsections.js"
);
if
(
f
.
open
(
IO_WriteOnly
))
{
FTextStream
t
(
&
f
);
t
<<
"var showTriggers = new Array();
\n
"
"
\n
"
"function registerShow(sectId,showFunc) {
\n
"
" showTriggers[sectId] = showFunc;
\n
"
"}
\n
"
"
\n
"
"function hasClass(ele,cls) {
\n
"
" return ele.className.match(new RegExp('(
\\\\
s|^)'+cls+'(
\\\\
s|$)'));
\n
"
"}
\n
"
"
\n
"
"function addClass(ele,cls) {
\n
"
" if (!this.hasClass(ele,cls)) ele.className +=
\"
\"
+cls;
\n
"
"}
\n
"
"
\n
"
"function removeClass(ele,cls) {
\n
"
" if (hasClass(ele,cls)) {
\n
"
" var reg = new RegExp('(
\\\\
s|^)'+cls+'(
\\\\
s|$)');
\n
"
" ele.className=ele.className.replace(reg,' ');
\n
"
" }
\n
"
"}
\n
"
"
\n
"
"function toggleVisibility(linkObj) {
\n
"
" var base = linkObj.getAttribute('id');
\n
"
" var summary = document.getElementById(base + '-summary');
\n
"
" var content = document.getElementById(base + '-content');
\n
"
" var trigger = document.getElementById(base + '-trigger');
\n
"
" if ( hasClass(linkObj,'closed') ) {
\n
"
" summary.style.display = 'none';
\n
"
" content.style.display = 'block';
\n
"
" trigger.src = trigger.src.substring(0,trigger.src.length-10)+'open.png';
\n
"
" removeClass(linkObj,'closed');
\n
"
" addClass(linkObj,'opened');
\n
"
" if (showTriggers[base]) { showTriggers[base](); }
\n
"
" } else if ( hasClass(linkObj,'opened') ) {
\n
"
" summary.style.display = 'block';
\n
"
" content.style.display = 'none';
\n
"
" trigger.src = trigger.src.substring(0,trigger.src.length-8)+'closed.png';
\n
"
" removeClass(linkObj,'opened');
\n
"
" addClass(linkObj,'closed');
\n
"
" }
\n
"
" return false;
\n
"
"}
\n
"
;
}
}
}
}
/// Additional initialization after indices have been created
/// Additional initialization after indices have been created
...
@@ -1352,87 +1404,8 @@ static void generateDynamicSections(FTextStream &t,const QCString &relPath)
...
@@ -1352,87 +1404,8 @@ static void generateDynamicSections(FTextStream &t,const QCString &relPath)
{
{
if
(
Config_getBool
(
"HTML_DYNAMIC_SECTIONS"
))
if
(
Config_getBool
(
"HTML_DYNAMIC_SECTIONS"
))
{
{
t
<<
t
<<
"<script type=
\"
text/javascript
\"
src=
\"
"
<<
relPath
#if 0
<<
"dynsections.js
\"
></script>
\n
"
;
"<script type=\"text/javascript\">\n"
"<!--\n"
"function changeDisplayState (e){\n"
" var num=this.id.replace(/[^[0-9]/g,'');\n"
" var button=this.firstChild;\n"
" var sectionDiv=document.getElementById('dynsection'+num);\n"
" if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){\n"
" sectionDiv.style.display='block';\n"
" button.src='" << relPath << "open.png';\n"
" }else{\n"
" sectionDiv.style.display='none';\n"
" button.src='" << relPath << "closed.png';\n"
" }\n"
"}\n"
"function initDynSections(){\n"
" var divs=document.getElementsByTagName('div');\n"
" var sectionCounter=1;\n"
" for(var i=0;i<divs.length-1;i++){\n"
" if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){\n"
" var header=divs[i];\n"
" var section=divs[i+1];\n"
" var button=header.firstChild;\n"
" if (button!='IMG'){\n"
" divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);\n"
" button=document.createElement('img');\n"
" divs[i].insertBefore(button,divs[i].firstChild);\n"
" }\n"
" header.style.cursor='pointer';\n"
" header.onclick=changeDisplayState;\n"
" header.id='dynheader'+sectionCounter;\n"
" button.src='" << relPath << "closed.png';\n"
" section.id='dynsection'+sectionCounter;\n"
" section.style.display='none';\n"
" section.style.marginLeft='14px';\n"
" sectionCounter++;\n"
" }\n"
" }\n"
"}\n"
"window.onload = initDynSections;\n"
"-->\n"
"</script>\n";
#endif
"<script type=
\"
text/javascript
\"
>
\n
"
"function hasClass(ele,cls) {
\n
"
" return ele.className.match(new RegExp('(
\\\\
s|^)'+cls+'(
\\\\
s|$)'));
\n
"
"}
\n
"
"
\n
"
"function addClass(ele,cls) {
\n
"
" if (!this.hasClass(ele,cls)) ele.className +=
\"
\"
+cls;
\n
"
"}
\n
"
"
\n
"
"function removeClass(ele,cls) {
\n
"
" if (hasClass(ele,cls)) {
\n
"
" var reg = new RegExp('(
\\\\
s|^)'+cls+'(
\\\\
s|$)');
\n
"
" ele.className=ele.className.replace(reg,' ');
\n
"
" }
\n
"
"}
\n
"
"
\n
"
"function toggleVisibility(linkObj) {
\n
"
" var base = linkObj.getAttribute('id');
\n
"
" var summary = document.getElementById(base + '-summary');
\n
"
" var content = document.getElementById(base + '-content');
\n
"
" var trigger = document.getElementById(base + '-trigger');
\n
"
" if ( hasClass(linkObj,'closed') ) {
\n
"
" summary.style.display = 'none';
\n
"
" content.style.display = 'block';
\n
"
" trigger.src = '"
<<
relPath
<<
"open.png';
\n
"
" removeClass(linkObj,'closed');
\n
"
" addClass(linkObj,'opened');
\n
"
" } else if ( hasClass(linkObj,'opened') ) {
\n
"
" summary.style.display = 'block';
\n
"
" content.style.display = 'none';
\n
"
" trigger.src = '"
<<
relPath
<<
"closed.png';
\n
"
" removeClass(linkObj,'opened');
\n
"
" addClass(linkObj,'closed');
\n
"
" }
\n
"
" return false;
\n
"
"}
\n
"
"</script>
\n
"
;
}
}
}
}
...
@@ -1478,10 +1451,10 @@ void HtmlGenerator::startFile(const char *name,const char *,
...
@@ -1478,10 +1451,10 @@ void HtmlGenerator::startFile(const char *name,const char *,
static
bool
searchEngine
=
Config_getBool
(
"SEARCHENGINE"
);
static
bool
searchEngine
=
Config_getBool
(
"SEARCHENGINE"
);
if
(
searchEngine
/*&& !generateTreeView*/
)
if
(
searchEngine
/*&& !generateTreeView*/
)
{
{
t
<<
"<script type=
\"
text/javascript
\"
>
<!--
\n
"
;
t
<<
"<script type=
\"
text/javascript
\"
>
\n
"
;
t
<<
"var searchBox = new SearchBox(
\"
searchBox
\"
,
\"
"
t
<<
"var searchBox = new SearchBox(
\"
searchBox
\"
,
\"
"
<<
relPath
<<
"search
\"
,false,'"
<<
theTranslator
->
trSearch
()
<<
"');
\n
"
;
<<
relPath
<<
"search
\"
,false,'"
<<
theTranslator
->
trSearch
()
<<
"');
\n
"
;
t
<<
"
-->
</script>
\n
"
;
t
<<
"</script>
\n
"
;
}
}
generateDynamicSections
(
t
,
relPath
);
generateDynamicSections
(
t
,
relPath
);
m_sectionCount
=
0
;
m_sectionCount
=
0
;
...
@@ -2408,7 +2381,7 @@ void HtmlGenerator::endDotGraph(const DotClassGraph &g)
...
@@ -2408,7 +2381,7 @@ void HtmlGenerator::endDotGraph(const DotClassGraph &g)
endSectionSummary
(
t
);
endSectionSummary
(
t
);
startSectionContent
(
t
,
m_sectionCount
);
startSectionContent
(
t
,
m_sectionCount
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
,
TRUE
,
TRUE
,
m_sectionCount
);
if
(
Config_getBool
(
"GENERATE_LEGEND"
))
if
(
Config_getBool
(
"GENERATE_LEGEND"
))
{
{
t
<<
"<center><span class=
\"
legend
\"
>["
;
t
<<
"<center><span class=
\"
legend
\"
>["
;
...
@@ -2434,7 +2407,7 @@ void HtmlGenerator::endInclDepGraph(const DotInclDepGraph &g)
...
@@ -2434,7 +2407,7 @@ void HtmlGenerator::endInclDepGraph(const DotInclDepGraph &g)
endSectionSummary
(
t
);
endSectionSummary
(
t
);
startSectionContent
(
t
,
m_sectionCount
);
startSectionContent
(
t
,
m_sectionCount
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
,
TRUE
,
m_sectionCount
);
endSectionContent
(
t
);
endSectionContent
(
t
);
m_sectionCount
++
;
m_sectionCount
++
;
...
@@ -2452,7 +2425,7 @@ void HtmlGenerator::endGroupCollaboration(const DotGroupCollaboration &g)
...
@@ -2452,7 +2425,7 @@ void HtmlGenerator::endGroupCollaboration(const DotGroupCollaboration &g)
endSectionSummary
(
t
);
endSectionSummary
(
t
);
startSectionContent
(
t
,
m_sectionCount
);
startSectionContent
(
t
,
m_sectionCount
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
,
TRUE
,
m_sectionCount
);
endSectionContent
(
t
);
endSectionContent
(
t
);
m_sectionCount
++
;
m_sectionCount
++
;
...
@@ -2470,7 +2443,7 @@ void HtmlGenerator::endCallGraph(const DotCallGraph &g)
...
@@ -2470,7 +2443,7 @@ void HtmlGenerator::endCallGraph(const DotCallGraph &g)
endSectionSummary
(
t
);
endSectionSummary
(
t
);
startSectionContent
(
t
,
m_sectionCount
);
startSectionContent
(
t
,
m_sectionCount
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
,
TRUE
,
m_sectionCount
);
endSectionContent
(
t
);
endSectionContent
(
t
);
m_sectionCount
++
;
m_sectionCount
++
;
...
@@ -2488,7 +2461,7 @@ void HtmlGenerator::endDirDepGraph(const DotDirDeps &g)
...
@@ -2488,7 +2461,7 @@ void HtmlGenerator::endDirDepGraph(const DotDirDeps &g)
endSectionSummary
(
t
);
endSectionSummary
(
t
);
startSectionContent
(
t
,
m_sectionCount
);
startSectionContent
(
t
,
m_sectionCount
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
fileName
,
relPath
,
TRUE
,
m_sectionCount
);
endSectionContent
(
t
);
endSectionContent
(
t
);
m_sectionCount
++
;
m_sectionCount
++
;
...
@@ -2971,10 +2944,10 @@ void HtmlGenerator::writeSearchPage()
...
@@ -2971,10 +2944,10 @@ void HtmlGenerator::writeSearchPage()
static
bool
searchEngine
=
Config_getBool
(
"SEARCHENGINE"
);
static
bool
searchEngine
=
Config_getBool
(
"SEARCHENGINE"
);
if
(
searchEngine
/* && !generateTreeView*/
)
if
(
searchEngine
/* && !generateTreeView*/
)
{
{
t
<<
"<script type=
\"
text/javascript
\"
>
<!--
\n
"
;
t
<<
"<script type=
\"
text/javascript
\"
>
\n
"
;
t
<<
"var searchBox = new SearchBox(
\"
searchBox
\"
,
\"
"
t
<<
"var searchBox = new SearchBox(
\"
searchBox
\"
,
\"
"
<<
"search
\"
,false,'"
<<
theTranslator
->
trSearch
()
<<
"');
\n
"
;
<<
"search
\"
,false,'"
<<
theTranslator
->
trSearch
()
<<
"');
\n
"
;
t
<<
"
-->
</script>
\n
"
;
t
<<
"</script>
\n
"
;
}
}
t
<<
"<div id=
\"
top
\"
>"
<<
endl
;
t
<<
"<div id=
\"
top
\"
>"
<<
endl
;
writeTitleArea
(
t
,
""
,
projectName
,
projectBrief
,
projectNumber
,
projectLogo
);
writeTitleArea
(
t
,
""
,
projectName
,
projectBrief
,
projectNumber
,
projectLogo
);
...
...
src/htmlgen.h
View file @
b6550378
...
@@ -46,9 +46,9 @@ class HtmlGenerator : public OutputGenerator
...
@@ -46,9 +46,9 @@ class HtmlGenerator : public OutputGenerator
void
enable
()
void
enable
()
{
if
(
genStack
->
top
())
active
=*
genStack
->
top
();
else
active
=
TRUE
;
}
{
if
(
genStack
->
top
())
active
=*
genStack
->
top
();
else
active
=
TRUE
;
}
void
disable
()
{
active
=
FALSE
;
}
void
disable
()
{
active
=
FALSE
;
}
void
enableIf
(
OutputType
o
)
{
if
(
o
==
Html
)
active
=
TRUE
;
}
void
enableIf
(
OutputType
o
)
{
if
(
o
==
Html
)
enable
()
;
}
void
disableIf
(
OutputType
o
)
{
if
(
o
==
Html
)
active
=
FALSE
;
}
void
disableIf
(
OutputType
o
)
{
if
(
o
==
Html
)
disable
()
;
}
void
disableIfNot
(
OutputType
o
)
{
if
(
o
!=
Html
)
active
=
FALSE
;
}
void
disableIfNot
(
OutputType
o
)
{
if
(
o
!=
Html
)
disable
()
;
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
Html
&&
active
);
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
Html
&&
active
);
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Html
)
?
this
:
0
;
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Html
)
?
this
:
0
;
}
...
...
src/latexdocvisitor.cpp
View file @
b6550378
...
@@ -1304,7 +1304,9 @@ void LatexDocVisitor::visitPost(DocParamList *pl)
...
@@ -1304,7 +1304,9 @@ void LatexDocVisitor::visitPost(DocParamList *pl)
void
LatexDocVisitor
::
visitPre
(
DocXRefItem
*
x
)
void
LatexDocVisitor
::
visitPre
(
DocXRefItem
*
x
)
{
{
if
(
m_hide
)
return
;
if
(
m_hide
)
return
;
m_t
<<
"
\\
begin{Desc}"
<<
endl
;
m_t
<<
"
\\
begin{DoxyRefDesc}{"
;
filter
(
x
->
title
());
m_t
<<
"}"
<<
endl
;
bool
anonymousEnum
=
x
->
file
()
==
"@"
;
bool
anonymousEnum
=
x
->
file
()
==
"@"
;
m_t
<<
"
\\
item["
;
m_t
<<
"
\\
item["
;
if
(
Config_getBool
(
"PDF_HYPERLINKS"
)
&&
!
anonymousEnum
)
if
(
Config_getBool
(
"PDF_HYPERLINKS"
)
&&
!
anonymousEnum
)
...
@@ -1324,7 +1326,7 @@ void LatexDocVisitor::visitPre(DocXRefItem *x)
...
@@ -1324,7 +1326,7 @@ void LatexDocVisitor::visitPre(DocXRefItem *x)
void
LatexDocVisitor
::
visitPost
(
DocXRefItem
*
)
void
LatexDocVisitor
::
visitPost
(
DocXRefItem
*
)
{
{
if
(
m_hide
)
return
;
if
(
m_hide
)
return
;
m_t
<<
"
\\
end{Desc}"
<<
endl
;
m_t
<<
"
\\
end{D
oxyRefD
esc}"
<<
endl
;
}
}
void
LatexDocVisitor
::
visitPre
(
DocInternalRef
*
ref
)
void
LatexDocVisitor
::
visitPre
(
DocInternalRef
*
ref
)
...
...
src/latexgen.cpp
View file @
b6550378
...
@@ -325,7 +325,6 @@ static void writeDefaultStyleSheetPart1(FTextStream &t)
...
@@ -325,7 +325,6 @@ static void writeDefaultStyleSheetPart1(FTextStream &t)
"
\\
RequirePackage{longtable}
\n
"
"
\\
RequirePackage{longtable}
\n
"
"
\\
RequirePackage{verbatim}
\n
"
"
\\
RequirePackage{verbatim}
\n
"
"
\\
RequirePackage{ifthen}
\n
"
"
\\
RequirePackage{ifthen}
\n
"
"
\\
RequirePackage{settobox}
\n
"
"
\\
RequirePackage[table]{xcolor}
\n\n
"
;
"
\\
RequirePackage[table]{xcolor}
\n\n
"
;
t
<<
"% Use helvetica font instead of times roman
\n
"
t
<<
"% Use helvetica font instead of times roman
\n
"
...
@@ -773,25 +772,30 @@ static void writeDefaultStyleSheetPart3(FTextStream &t)
...
@@ -773,25 +772,30 @@ static void writeDefaultStyleSheetPart3(FTextStream &t)
t
<<
"
\\
newlength{
\\
xreflength}
\n
"
;
t
<<
"
\\
newlength{
\\
xreflength}
\n
"
;
t
<<
"
\\
newcommand{
\\
xreflabel}[1]{%
\n
"
;
t
<<
"
\\
newcommand{
\\
xreflabel}[1]{%
\n
"
;
t
<<
"
\\
sbox{
\\
xrefbox}{#1}%
\n
"
;
t
<<
"
\\
sbox{
\\
xrefbox}{#1}%
\n
"
;
t
<<
"
\\
set
toboxwidth{
\\
xreflength}{
\\
xrefbox}%
\n
"
;
t
<<
"
\\
set
length{
\\
xreflength}{
\\
wd
\\
xrefbox}%
\n
"
;
t
<<
"
\\
ifthenelse{
\\
xreflength>
\\
labelwidth}{%
\n
"
;
t
<<
"
\\
ifthenelse{
\\
xreflength>
\\
labelwidth}{%
\n
"
;
t
<<
"
\\
begin{minipage}{
\\
textwidth}%
\n
"
;
t
<<
"
\\
begin{minipage}{
\\
textwidth}%
\n
"
;
t
<<
"
\\
setlength{
\\
parindent}{0pt}%
\n
"
;
t
<<
"
\\
setlength{
\\
parindent}{0pt}%
\n
"
;
t
<<
"
\\
hangindent=
25pt
\\
bfseries #1
\\
vspace{
\\
itemsep}%
\n
"
;
t
<<
"
\\
hangindent=
15pt
\\
bfseries #1
\\
vspace{1.2
\\
itemsep}%
\n
"
;
t
<<
"
\\
end{minipage}%
\n
"
;
t
<<
"
\\
end{minipage}%
\n
"
;
t
<<
" }{%
\n
"
;
t
<<
" }{%
\n
"
;
t
<<
"
\\
parbox[b]{
\\
labelwidth}{
\\
makebox[0pt][l]{
\\
textbf{#1}}}%
\n
"
;
t
<<
"
\\
parbox[b]{
\\
labelwidth}{
\\
makebox[0pt][l]{
\\
textbf{#1}}}%
\n
"
;
t
<<
" }}%
\n
"
;
t
<<
" }}%
\n
"
;
t
<<
"
\\
newenvironment{DoxyRefList}{%
\n
"
;
t
<<
"
\\
newenvironment{DoxyRefList}{%
\n
"
;
t
<<
"
\\
begin{list}{}{%
\n
"
;
t
<<
"
\\
begin{list}{}{%
\n
"
;
t
<<
"
\\
setlength{
\\
labelwidth}{
75
pt}%
\n
"
;
t
<<
"
\\
setlength{
\\
labelwidth}{
10
pt}%
\n
"
;
t
<<
"
\\
setlength{
\\
leftmargin}{
\\
labelwidth}%
\n
"
;
t
<<
"
\\
setlength{
\\
leftmargin}{
\\
labelwidth}%
\n
"
;
t
<<
"
\\
addtolength{
\\
leftmargin}{
\\
labelsep}%
\n
"
;
t
<<
"
\\
addtolength{
\\
leftmargin}{
\\
labelsep}%
\n
"
;
t
<<
"
\\
renewcommand{
\\
makelabel}{
\\
xreflabel}%
\n
"
;
t
<<
"
\\
renewcommand{
\\
makelabel}{
\\
xreflabel}%
\n
"
;
t
<<
" }%
\n
"
;
t
<<
" }%
\n
"
;
t
<<
" }%
\n
"
;
t
<<
" }%
\n
"
;
t
<<
"{
\\
end{list}}
\n
"
;
t
<<
"{
\\
end{list}}
\n
"
;
t
<<
"
\\
newenvironment{DoxyRefDesc}[1]
\n
"
;
t
<<
"{
\\
begin{list}{}{%
\n
"
;
t
<<
"
\\
renewcommand
\\
makelabel[1]{
\\
textbf{##1}}
\n
"
;
t
<<
"
\\
settowidth
\\
labelwidth{
\\
makelabel{#1}}
\n
"
;
t
<<
"
\\
setlength
\\
leftmargin{
\\
labelwidth+
\\
labelsep}}}
\n
"
;
t
<<
"{
\\
end{list}}
\n
"
;
t
<<
"
\\
newenvironment{Indent}
\n
"
;
t
<<
"
\\
newenvironment{Indent}
\n
"
;
t
<<
" {
\\
begin{list}{}{
\\
setlength{
\\
leftmargin}{0.5cm}}
\n
"
;
t
<<
" {
\\
begin{list}{}{
\\
setlength{
\\
leftmargin}{0.5cm}}
\n
"
;
t
<<
"
\\
item[]
\\
ignorespaces}
\n
"
;
t
<<
"
\\
item[]
\\
ignorespaces}
\n
"
;
...
...
src/latexgen.h
View file @
b6550378
...
@@ -38,9 +38,9 @@ class LatexGenerator : public OutputGenerator
...
@@ -38,9 +38,9 @@ class LatexGenerator : public OutputGenerator
void
enable
()
void
enable
()
{
if
(
genStack
->
top
())
active
=*
genStack
->
top
();
else
active
=
TRUE
;
}
{
if
(
genStack
->
top
())
active
=*
genStack
->
top
();
else
active
=
TRUE
;
}
void
disable
()
{
active
=
FALSE
;
}
void
disable
()
{
active
=
FALSE
;
}
void
enableIf
(
OutputType
o
)
{
if
(
o
==
Latex
)
active
=
TRUE
;
}
void
enableIf
(
OutputType
o
)
{
if
(
o
==
Latex
)
enable
()
;
}
void
disableIf
(
OutputType
o
)
{
if
(
o
==
Latex
)
active
=
FALSE
;
}
void
disableIf
(
OutputType
o
)
{
if
(
o
==
Latex
)
disable
()
;
}
void
disableIfNot
(
OutputType
o
)
{
if
(
o
!=
Latex
)
active
=
FALSE
;
}
void
disableIfNot
(
OutputType
o
)
{
if
(
o
!=
Latex
)
disable
()
;
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
Latex
&&
active
);
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
Latex
&&
active
);
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Latex
)
?
this
:
0
;
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Latex
)
?
this
:
0
;
}
...
...
src/layout.cpp
View file @
b6550378
...
@@ -511,10 +511,12 @@ class LayoutParser : public QXmlDefaultHandler
...
@@ -511,10 +511,12 @@ class LayoutParser : public QXmlDefaultHandler
MemberList
::
docTypedefMembers
,
theTranslator
->
trTypedefDocumentation
()));
MemberList
::
docTypedefMembers
,
theTranslator
->
trTypedefDocumentation
()));
m_sHandler
.
insert
(
"file/memberdef/enums"
,
m_sHandler
.
insert
(
"file/memberdef/enums"
,
new
StartElementHandlerMember
(
this
,
&
LayoutParser
::
startMemberDefEntry
,
new
StartElementHandlerMember
(
this
,
&
LayoutParser
::
startMemberDefEntry
,
MemberList
::
docEnumMembers
,
theTranslator
->
trEnumerationTypeDocumentation
()));
MemberList
::
docEnumMembers
,
theTranslator
->
trEnumerationTypeDocumentation
()));
m_sHandler
.
insert
(
"file/memberdef/functions"
,
m_sHandler
.
insert
(
"file/memberdef/functions"
,
new
StartElementHandlerMember
(
this
,
&
LayoutParser
::
startMemberDefEntry
,
new
StartElementHandlerMember
(
this
,
&
LayoutParser
::
startMemberDefEntry
,
MemberList
::
docFuncMembers
,
theTranslator
->
trFunctionDocumentation
()));
MemberList
::
docFuncMembers
,
fortranOpt
?
theTranslator
->
trSubprogramDocumentation
()
:
theTranslator
->
trFunctionDocumentation
()));
m_sHandler
.
insert
(
"file/memberdef/variables"
,
m_sHandler
.
insert
(
"file/memberdef/variables"
,
new
StartElementHandlerMember
(
this
,
&
LayoutParser
::
startMemberDefEntry
,
new
StartElementHandlerMember
(
this
,
&
LayoutParser
::
startMemberDefEntry
,
MemberList
::
docVarMembers
,
theTranslator
->
trVariableDocumentation
()));
MemberList
::
docVarMembers
,
theTranslator
->
trVariableDocumentation
()));
...
...
src/mangen.h
View file @
b6550378
...
@@ -34,9 +34,9 @@ class ManGenerator : public OutputGenerator
...
@@ -34,9 +34,9 @@ class ManGenerator : public OutputGenerator
void
enable
()
void
enable
()
{
if
(
genStack
->
top
())
active
=*
genStack
->
top
();
else
active
=
TRUE
;
}
{
if
(
genStack
->
top
())
active
=*
genStack
->
top
();
else
active
=
TRUE
;
}
void
disable
()
{
active
=
FALSE
;
}
void
disable
()
{
active
=
FALSE
;
}
void
enableIf
(
OutputType
o
)
{
if
(
o
==
Man
)
active
=
TRUE
;
}
void
enableIf
(
OutputType
o
)
{
if
(
o
==
Man
)
enable
();
}
void
disableIf
(
OutputType
o
)
{
if
(
o
==
Man
)
active
=
FALSE
;
}
void
disableIf
(
OutputType
o
)
{
if
(
o
==
Man
)
disable
()
;
}
void
disableIfNot
(
OutputType
o
)
{
if
(
o
!=
Man
)
active
=
FALSE
;
}
void
disableIfNot
(
OutputType
o
)
{
if
(
o
!=
Man
)
disable
()
;
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
Man
&&
active
);
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
Man
&&
active
);
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Man
)
?
this
:
0
;
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Man
)
?
this
:
0
;
}
...
...
src/outputgen.cpp
View file @
b6550378
...
@@ -58,6 +58,7 @@ void OutputGenerator::startPlainFile(const char *name)
...
@@ -58,6 +58,7 @@ void OutputGenerator::startPlainFile(const char *name)
void
OutputGenerator
::
endPlainFile
()
void
OutputGenerator
::
endPlainFile
()
{
{
t
.
unsetDevice
();
delete
file
;
delete
file
;
file
=
0
;
file
=
0
;
fileName
.
resize
(
0
);
fileName
.
resize
(
0
);
...
@@ -66,12 +67,12 @@ void OutputGenerator::endPlainFile()
...
@@ -66,12 +67,12 @@ void OutputGenerator::endPlainFile()
void
OutputGenerator
::
pushGeneratorState
()
void
OutputGenerator
::
pushGeneratorState
()
{
{
genStack
->
push
(
new
bool
(
isEnabled
()));
genStack
->
push
(
new
bool
(
isEnabled
()));
//printf("%p:pushGeneratorState(%d)
\n",this,genStack->count
());
//printf("%p:pushGeneratorState(%d)
enabled=%d\n",this,genStack->count(),isEnabled
());
}
}
void
OutputGenerator
::
popGeneratorState
()
void
OutputGenerator
::
popGeneratorState
()
{
{
//printf("%p:popGeneratorState(%d)
\n",this,genStack->count
());
//printf("%p:popGeneratorState(%d)
enabled=%d\n",this,genStack->count(),isEnabled
());
bool
*
lb
=
genStack
->
pop
();
bool
*
lb
=
genStack
->
pop
();
ASSERT
(
lb
!=
0
);
ASSERT
(
lb
!=
0
);
if
(
lb
==
0
)
return
;
// for some robustness against superfluous \endhtmlonly commands.
if
(
lb
==
0
)
return
;
// for some robustness against superfluous \endhtmlonly commands.
...
...
src/qhp.cpp
View file @
b6550378
...
@@ -33,6 +33,7 @@ static QCString makeFileName(const char * withoutExtension)
...
@@ -33,6 +33,7 @@ static QCString makeFileName(const char * withoutExtension)
static
QCString
makeRef
(
const
char
*
withoutExtension
,
const
char
*
anchor
)
static
QCString
makeRef
(
const
char
*
withoutExtension
,
const
char
*
anchor
)
{
{
//printf("QHP::makeRef(%s,%s)\n",withoutExtension,anchor);
if
(
!
withoutExtension
)
return
QCString
();
if
(
!
withoutExtension
)
return
QCString
();
QCString
result
=
makeFileName
(
withoutExtension
);
QCString
result
=
makeFileName
(
withoutExtension
);
if
(
!
anchor
)
return
result
;
if
(
!
anchor
)
return
result
;
...
@@ -191,6 +192,10 @@ void Qhp::addIndexItem(Definition *context,MemberDef *md,
...
@@ -191,6 +192,10 @@ void Qhp::addIndexItem(Definition *context,MemberDef *md,
const
char
*
word
)
const
char
*
word
)
{
{
(
void
)
word
;
(
void
)
word
;
//printf("addIndexItem(%s %s %s\n",
// context?context->name().data():"<none>",
// md?md->name().data():"<none>",
// word);
if
(
md
)
// member
if
(
md
)
// member
{
{
...
...
src/rtfgen.cpp
View file @
b6550378
...
@@ -2652,13 +2652,19 @@ void RTFGenerator::endParamList()
...
@@ -2652,13 +2652,19 @@ void RTFGenerator::endParamList()
void
RTFGenerator
::
startParameterType
(
bool
first
,
const
char
*
key
)
void
RTFGenerator
::
startParameterType
(
bool
first
,
const
char
*
key
)
{
{
DBG_RTF
(
t
<<
"{
\\
comment (startParameter
List
)}"
<<
endl
)
DBG_RTF
(
t
<<
"{
\\
comment (startParameter
Type
)}"
<<
endl
)
if
(
!
first
&&
key
)
if
(
!
first
&&
key
)
{
{
t
<<
" "
<<
key
<<
" "
;
t
<<
" "
<<
key
<<
" "
;
}
}
}
}
void
RTFGenerator
::
endParameterType
()
{
DBG_RTF
(
t
<<
"{
\\
comment (endParameterType)}"
<<
endl
)
t
<<
" "
;
}
void
RTFGenerator
::
printDoc
(
DocNode
*
n
,
const
char
*
langExt
)
void
RTFGenerator
::
printDoc
(
DocNode
*
n
,
const
char
*
langExt
)
{
{
RTFDocVisitor
*
visitor
=
new
RTFDocVisitor
(
t
,
*
this
,
langExt
);
RTFDocVisitor
*
visitor
=
new
RTFDocVisitor
(
t
,
*
this
,
langExt
);
...
...
src/rtfgen.h
View file @
b6550378
...
@@ -34,9 +34,9 @@ class RTFGenerator : public OutputGenerator
...
@@ -34,9 +34,9 @@ class RTFGenerator : public OutputGenerator
void
enable
()
void
enable
()
{
if
(
genStack
->
top
())
active
=*
genStack
->
top
();
else
active
=
TRUE
;
}
{
if
(
genStack
->
top
())
active
=*
genStack
->
top
();
else
active
=
TRUE
;
}
void
disable
()
{
active
=
FALSE
;
}
void
disable
()
{
active
=
FALSE
;
}
void
enableIf
(
OutputType
o
)
{
if
(
o
==
RTF
)
active
=
TRUE
;
}
void
enableIf
(
OutputType
o
)
{
if
(
o
==
RTF
)
enable
()
;
}
void
disableIf
(
OutputType
o
)
{
if
(
o
==
RTF
)
active
=
FALSE
;
}
void
disableIf
(
OutputType
o
)
{
if
(
o
==
RTF
)
disable
()
;
}
void
disableIfNot
(
OutputType
o
)
{
if
(
o
!=
RTF
)
active
=
FALSE
;
}
void
disableIfNot
(
OutputType
o
)
{
if
(
o
!=
RTF
)
disable
()
;
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
RTF
&&
active
);
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
RTF
&&
active
);
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
RTF
)
?
this
:
0
;
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
RTF
)
?
this
:
0
;
}
...
@@ -219,7 +219,7 @@ class RTFGenerator : public OutputGenerator
...
@@ -219,7 +219,7 @@ class RTFGenerator : public OutputGenerator
void
startMemberDocName
(
bool
)
{}
void
startMemberDocName
(
bool
)
{}
void
endMemberDocName
()
{}
void
endMemberDocName
()
{}
void
startParameterType
(
bool
,
const
char
*
);
void
startParameterType
(
bool
,
const
char
*
);
void
endParameterType
()
{}
void
endParameterType
()
;
void
startParameterName
(
bool
)
{}
void
startParameterName
(
bool
)
{}
void
endParameterName
(
bool
,
bool
,
bool
)
{}
void
endParameterName
(
bool
,
bool
,
bool
)
{}
void
startParameterList
(
bool
)
{}
void
startParameterList
(
bool
)
{}
...
...
src/scanner.l
View file @
b6550378
...
@@ -5064,7 +5064,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
...
@@ -5064,7 +5064,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
new BaseInfo(baseName,baseProt,baseVirt)
new BaseInfo(baseName,baseProt,baseVirt)
);
);
}
}
if ((current->spec &
Entry::Interface
) ||
if ((current->spec &
(Entry::Interface|Entry::Struct)
) ||
insideJava || insidePHP || insideCS ||
insideJava || insidePHP || insideCS ||
insideD || insideObjC)
insideD || insideObjC)
{
{
...
...
src/search.js
View file @
b6550378
...
@@ -240,7 +240,7 @@ function SearchBox(name, resultsPath, inFrame, label)
...
@@ -240,7 +240,7 @@ function SearchBox(name, resultsPath, inFrame, label)
var
node
=
child
.
firstChild
;
var
node
=
child
.
firstChild
;
if
(
j
==
id
)
if
(
j
==
id
)
{
{
node
.
innerHTML
=
'&
bull
;'
;
node
.
innerHTML
=
'&
#8226
;'
;
}
}
else
else
{
{
...
@@ -337,7 +337,7 @@ function SearchBox(name, resultsPath, inFrame, label)
...
@@ -337,7 +337,7 @@ function SearchBox(name, resultsPath, inFrame, label)
hasResultsPage
=
false
;
hasResultsPage
=
false
;
}
}
window
.
frames
.
MSearchResults
.
location
.
href
=
resultsPageWithSearch
;
window
.
frames
.
MSearchResults
.
location
=
resultsPageWithSearch
;
var
domPopupSearchResultsWindow
=
this
.
DOMPopupSearchResultsWindow
();
var
domPopupSearchResultsWindow
=
this
.
DOMPopupSearchResultsWindow
();
if
(
domPopupSearchResultsWindow
.
style
.
display
!=
'block'
)
if
(
domPopupSearchResultsWindow
.
style
.
display
!=
'block'
)
...
...
src/search_js.h
View file @
b6550378
...
@@ -240,7 +240,7 @@
...
@@ -240,7 +240,7 @@
" var node = child.firstChild;
\n
"
" var node = child.firstChild;
\n
"
" if (j==id)
\n
"
" if (j==id)
\n
"
" {
\n
"
" {
\n
"
" node.innerHTML='&
bull
;';
\n
"
" node.innerHTML='&
#8226
;';
\n
"
" }
\n
"
" }
\n
"
" else
\n
"
" else
\n
"
" {
\n
"
" {
\n
"
...
@@ -337,7 +337,7 @@
...
@@ -337,7 +337,7 @@
" hasResultsPage = false;
\n
"
" hasResultsPage = false;
\n
"
" }
\n
"
" }
\n
"
"
\n
"
"
\n
"
" window.frames.MSearchResults.location
.href
= resultsPageWithSearch;
\n
"
" window.frames.MSearchResults.location = resultsPageWithSearch;
\n
"
" var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
\n
"
" var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
\n
"
"
\n
"
"
\n
"
" if (domPopupSearchResultsWindow.style.display!='block')
\n
"
" if (domPopupSearchResultsWindow.style.display!='block')
\n
"
...
...
src/svgpan.js
View file @
b6550378
/**
/**
* The code below is based on SVGPan Library 1.2 and was modified for doxygen
* The code below is based on SVGPan Library 1.2 and was modified for doxygen
* to support both zooming and panning via the mouse and via embedded bottons.
*
*
* This code is licensed under the following BSD license:
* This code is licensed under the following BSD license:
*
*
...
@@ -46,11 +47,10 @@ var maxZoom;
...
@@ -46,11 +47,10 @@ var maxZoom;
if
(
!
window
)
window
=
this
;
if
(
!
window
)
window
=
this
;
/**
/**
*
Register handlers
*
Show the graph in the middle of the view, scaled to fit
*/
*/
function
init
(
evt
)
function
show
()
{
{
svgDoc
=
evt
.
target
.
ownerDocument
;
if
(
window
.
innerHeight
)
// Firefox
if
(
window
.
innerHeight
)
// Firefox
{
{
windowWidth
=
window
.
innerWidth
;
windowWidth
=
window
.
innerWidth
;
...
@@ -61,21 +61,39 @@ function init(evt)
...
@@ -61,21 +61,39 @@ function init(evt)
windowWidth
=
document
.
documentElement
.
clientWidth
windowWidth
=
document
.
documentElement
.
clientWidth
windowHeight
=
document
.
documentElement
.
clientHeight
windowHeight
=
document
.
documentElement
.
clientHeight
}
}
els
e
if
(
!
windowWidth
||
!
windowHeight
)
// failsaf
e
{
{
windowWidth
=
800
;
windowWidth
=
800
;
windowHeight
=
600
;
windowHeight
=
600
;
}
}
minZoom
=
windowHeight
/
viewHeight
;
minZoom
=
Math
.
min
(
windowHeight
/
viewHeight
,
windowWidth
/
viewWidth
)
;
maxZoom
=
1.5
;
maxZoom
=
minZoom
+
1.5
;
zoomInFactor
=
Math
.
pow
(
maxZoom
/
minZoom
,
1.0
/
zoomSteps
);
zoomInFactor
=
Math
.
pow
(
maxZoom
/
minZoom
,
1.0
/
zoomSteps
);
zoomOutFactor
=
1.0
/
zoomInFactor
;
zoomOutFactor
=
1.0
/
zoomInFactor
;
var
g
=
svgDoc
.
getElementById
(
'viewport'
);
var
g
=
svgDoc
.
getElementById
(
'viewport'
);
var
bb
=
g
.
getBBox
();
try
var
a
=
'scale('
+
minZoom
+
') rotate(0) translate('
+
((
innerWidth
-
viewWidth
*
minZoom
)
/
(
2
*
minZoom
))
+
' '
+
viewHeight
+
')'
;
{
var
bb
=
g
.
getBBox
();
// this can throw an exception if css { display: none }
var
tx
=
(
windowWidth
-
viewWidth
*
minZoom
+
8
)
/
(
2
*
minZoom
);
var
ty
=
viewHeight
+
(
windowHeight
-
viewHeight
*
minZoom
)
/
(
2
*
minZoom
);
var
a
=
'scale('
+
minZoom
+
') rotate(0) translate('
+
tx
+
' '
+
ty
+
')'
;
g
.
setAttribute
(
'transform'
,
a
);
g
.
setAttribute
(
'transform'
,
a
);
}
catch
(
e
)
{}
}
/**
* Register handlers
*/
function
init
(
evt
)
{
svgDoc
=
evt
.
target
.
ownerDocument
;
if
(
top
.
window
&&
top
.
window
.
registerShow
)
// register show function in html doc for dynamic sections
{
top
.
window
.
registerShow
(
sectionId
,
show
);
}
show
();
setAttributes
(
root
,
{
setAttributes
(
root
,
{
"onmousedown"
:
"handleMouseDown(evt)"
,
"onmousedown"
:
"handleMouseDown(evt)"
,
...
@@ -85,36 +103,22 @@ function init(evt)
...
@@ -85,36 +103,22 @@ function init(evt)
if
(
window
.
addEventListener
)
if
(
window
.
addEventListener
)
{
{
if
(
navigator
.
userAgent
.
toLowerCase
().
indexOf
(
'webkit'
)
>=
0
||
navigator
.
userAgent
.
toLowerCase
().
indexOf
(
"opera"
)
>=
0
)
if
(
navigator
.
userAgent
.
toLowerCase
().
indexOf
(
'webkit'
)
>=
0
||
window
.
addEventListener
(
'mousewheel'
,
handleMouseWheel
,
false
);
// Chrome/Safari
navigator
.
userAgent
.
toLowerCase
().
indexOf
(
"opera"
)
>=
0
||
navigator
.
appVersion
.
indexOf
(
"MSIE"
)
!=
-
1
)
{
window
.
addEventListener
(
'mousewheel'
,
handleMouseWheel
,
false
);
// Chrome/Safari/IE9
}
else
else
{
window
.
addEventListener
(
'DOMMouseScroll'
,
handleMouseWheel
,
false
);
// Others
window
.
addEventListener
(
'DOMMouseScroll'
,
handleMouseWheel
,
false
);
// Others
}
}
}
}
}
window
.
onresize
=
function
()
window
.
onresize
=
function
()
{
{
if
(
svgDoc
)
if
(
svgDoc
)
{
show
();
}
{
var
newWindowWidth
;
if
(
window
.
innerWidth
)
// Firefox
{
newWindowWidth
=
window
.
innerWidth
;
}
else
if
(
document
.
documentElement
.
clientWidth
)
// Chrome/Safari
{
newWindowWidth
=
document
.
documentElement
.
clientWidth
}
if
(
newWindowWidth
)
{
var
g
=
svgDoc
.
getElementById
(
"viewport"
);
var
n
=
g
.
getCTM
();
n
=
n
.
translate
((
newWindowWidth
-
windowWidth
)
/
(
2
*
minZoom
),
0
);
setCTM
(
g
,
n
);
stateTf
=
stateTf
.
multiply
(
n
.
inverse
());
windowWidth
=
newWindowWidth
;
}
}
}
}
/**
/**
...
@@ -178,9 +182,14 @@ function handleMouseWheel(evt)
...
@@ -178,9 +182,14 @@ function handleMouseWheel(evt)
{
{
delta
=
evt
.
wheelDelta
/
720
;
// Opera
delta
=
evt
.
wheelDelta
/
720
;
// Opera
}
}
else
if
(
navigator
.
userAgent
.
toLowerCase
().
indexOf
(
'chrome'
)
>
-
1
||
navigator
.
appVersion
.
indexOf
(
"MSIE"
)
!=
-
1
)
{
delta
=
evt
.
wheelDelta
/
7200
;
// Chrome/IE9
}
else
else
{
{
delta
=
evt
.
wheelDelta
/
7200
;
// Chrome/Safari/Opera
delta
=
evt
.
wheelDelta
/
7200
0
;
// Safari
}
}
}
}
else
else
...
@@ -243,6 +252,18 @@ function handleMouseUp(evt)
...
@@ -243,6 +252,18 @@ function handleMouseUp(evt)
state
=
''
;
state
=
''
;
}
}
/**
* Dumps a matrix to a string (useful for debug).
*/
function
dumpMatrix
(
matrix
)
{
var
s
=
"[ "
+
matrix
.
a
+
", "
+
matrix
.
c
+
", "
+
matrix
.
e
+
"
\n
"
+
matrix
.
b
+
", "
+
matrix
.
d
+
", "
+
matrix
.
f
+
"
\n
0, 0, 1 ]"
;
return
s
;
}
/**
* Handler for pan buttons
*/
function
handlePan
(
x
,
y
)
function
handlePan
(
x
,
y
)
{
{
var
g
=
svgDoc
.
getElementById
(
"viewport"
);
var
g
=
svgDoc
.
getElementById
(
"viewport"
);
...
@@ -250,14 +271,16 @@ function handlePan(x,y)
...
@@ -250,14 +271,16 @@ function handlePan(x,y)
}
}
/**
/**
*
Dumps a matrix to a string (useful for debug).
*
Handle reset button
*/
*/
function
dumpMatrix
(
matrix
)
function
handleReset
()
{
{
var
s
=
"[ "
+
matrix
.
a
+
", "
+
matrix
.
c
+
", "
+
matrix
.
e
+
"
\n
"
+
matrix
.
b
+
", "
+
matrix
.
d
+
", "
+
matrix
.
f
+
"
\n
0, 0, 1 ]"
;
show
();
return
s
;
}
}
/**
* Handler for zoom buttons
*/
function
handleZoom
(
evt
,
direction
)
function
handleZoom
(
evt
,
direction
)
{
{
var
g
=
svgDoc
.
getElementById
(
"viewport"
);
var
g
=
svgDoc
.
getElementById
(
"viewport"
);
...
@@ -269,3 +292,4 @@ function handleZoom(evt,direction)
...
@@ -269,3 +292,4 @@ function handleZoom(evt,direction)
doZoom
(
g
,
p
,
factor
);
doZoom
(
g
,
p
,
factor
);
}
}
src/svgpan_js.h
View file @
b6550378
"/**
\n
"
"/**
\n
"
" * The code below is based on SVGPan Library 1.2 and was modified for doxygen
\n
"
" * The code below is based on SVGPan Library 1.2 and was modified for doxygen
\n
"
" * to support both zooming and panning via the mouse and via embedded bottons.
\n
"
" *
\n
"
" *
\n
"
" * This code is licensed under the following BSD license:
\n
"
" * This code is licensed under the following BSD license:
\n
"
" *
\n
"
" *
\n
"
...
@@ -46,11 +47,10 @@
...
@@ -46,11 +47,10 @@
"if (!window) window=this;
\n
"
"if (!window) window=this;
\n
"
"
\n
"
"
\n
"
"/**
\n
"
"/**
\n
"
" *
Register handlers
\n
"
" *
Show the graph in the middle of the view, scaled to fit
\n
"
" */
\n
"
" */
\n
"
"function
init(evt)
\n
"
"function
show()
\n
"
"{
\n
"
"{
\n
"
" svgDoc = evt.target.ownerDocument;
\n
"
" if (window.innerHeight) // Firefox
\n
"
" if (window.innerHeight) // Firefox
\n
"
" {
\n
"
" {
\n
"
" windowWidth = window.innerWidth;
\n
"
" windowWidth = window.innerWidth;
\n
"
...
@@ -61,21 +61,39 @@
...
@@ -61,21 +61,39 @@
" windowWidth = document.documentElement.clientWidth
\n
"
" windowWidth = document.documentElement.clientWidth
\n
"
" windowHeight = document.documentElement.clientHeight
\n
"
" windowHeight = document.documentElement.clientHeight
\n
"
" }
\n
"
" }
\n
"
"
els
e
\n
"
"
if (!windowWidth || !windowHeight) // failsaf
e
\n
"
" {
\n
"
" {
\n
"
" windowWidth = 800;
\n
"
" windowWidth = 800;
\n
"
" windowHeight = 600;
\n
"
" windowHeight = 600;
\n
"
" }
\n
"
" }
\n
"
" minZoom =
windowHeight/viewHeight
;
\n
"
" minZoom =
Math.min(windowHeight/viewHeight,windowWidth/viewWidth)
;
\n
"
" maxZoom = 1.5;
\n
"
" maxZoom =
minZoom+
1.5;
\n
"
" zoomInFactor = Math.pow(maxZoom/minZoom,1.0/zoomSteps);
\n
"
" zoomInFactor = Math.pow(maxZoom/minZoom,1.0/zoomSteps);
\n
"
" zoomOutFactor = 1.0/zoomInFactor;
\n
"
" zoomOutFactor = 1.0/zoomInFactor;
\n
"
"
\n
"
"
\n
"
" var g = svgDoc.getElementById('viewport');
\n
"
" var g = svgDoc.getElementById('viewport');
\n
"
" var bb = g.getBBox();
\n
"
" try
\n
"
" var a = 'scale('+minZoom+') rotate(0) translate('+((innerWidth-viewWidth*minZoom)/(2*minZoom))+' '+viewHeight+')';
\n
"
" {
\n
"
"
\n
"
" var bb = g.getBBox(); // this can throw an exception if css { display: none }
\n
"
" var tx = (windowWidth-viewWidth*minZoom+8)/(2*minZoom);
\n
"
" var ty = viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom);
\n
"
" var a = 'scale('+minZoom+') rotate(0) translate('+tx+' '+ty+')';
\n
"
" g.setAttribute('transform',a);
\n
"
" g.setAttribute('transform',a);
\n
"
" }
\n
"
" catch(e) {}
\n
"
"}
\n
"
"
\n
"
"/**
\n
"
" * Register handlers
\n
"
" */
\n
"
"function init(evt)
\n
"
"{
\n
"
" svgDoc = evt.target.ownerDocument;
\n
"
" if (top.window && top.window.registerShow) // register show function in html doc for dynamic sections
\n
"
" {
\n
"
" top.window.registerShow(sectionId,show);
\n
"
" }
\n
"
" show();
\n
"
"
\n
"
"
\n
"
" setAttributes(root, {
\n
"
" setAttributes(root, {
\n
"
"
\"
onmousedown
\"
:
\"
handleMouseDown(evt)
\"
,
\n
"
"
\"
onmousedown
\"
:
\"
handleMouseDown(evt)
\"
,
\n
"
...
@@ -85,36 +103,22 @@
...
@@ -85,36 +103,22 @@
"
\n
"
"
\n
"
" if (window.addEventListener)
\n
"
" if (window.addEventListener)
\n
"
" {
\n
"
" {
\n
"
" if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 || navigator.userAgent.toLowerCase().indexOf(
\"
opera
\"
) >= 0)
\n
"
" if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 ||
\n
"
" window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari
\n
"
" navigator.userAgent.toLowerCase().indexOf(
\"
opera
\"
) >= 0 ||
\n
"
" navigator.appVersion.indexOf(
\"
MSIE
\"
) != -1)
\n
"
" {
\n
"
" window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/IE9
\n
"
" }
\n
"
" else
\n
"
" else
\n
"
" {
\n
"
" window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others
\n
"
" window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
"window.onresize=function()
\n
"
"window.onresize=function()
\n
"
"{
\n
"
"{
\n
"
" if (svgDoc)
\n
"
" if (svgDoc) { show(); }
\n
"
" {
\n
"
" var newWindowWidth;
\n
"
" if (window.innerWidth) // Firefox
\n
"
" {
\n
"
" newWindowWidth = window.innerWidth;
\n
"
" }
\n
"
" else if (document.documentElement.clientWidth) // Chrome/Safari
\n
"
" {
\n
"
" newWindowWidth = document.documentElement.clientWidth
\n
"
" }
\n
"
" if (newWindowWidth)
\n
"
" {
\n
"
" var g = svgDoc.getElementById(
\"
viewport
\"
);
\n
"
" var n = g.getCTM();
\n
"
" n = n.translate((newWindowWidth-windowWidth)/(2*minZoom),0);
\n
"
" setCTM(g, n);
\n
"
" stateTf = stateTf.multiply(n.inverse());
\n
"
" windowWidth = newWindowWidth;
\n
"
" }
\n
"
" }
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
"/**
\n
"
"/**
\n
"
...
@@ -178,9 +182,14 @@
...
@@ -178,9 +182,14 @@
" {
\n
"
" {
\n
"
" delta = evt.wheelDelta / 720; // Opera
\n
"
" delta = evt.wheelDelta / 720; // Opera
\n
"
" }
\n
"
" }
\n
"
" else if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1 ||
\n
"
" navigator.appVersion.indexOf(
\"
MSIE
\"
) != -1)
\n
"
" {
\n
"
" delta = evt.wheelDelta / 7200; // Chrome/IE9
\n
"
" }
\n
"
" else
\n
"
" else
\n
"
" {
\n
"
" {
\n
"
" delta = evt.wheelDelta / 7200
; // Chrome/Safari/Opera
\n
"
" delta = evt.wheelDelta / 7200
0; // Safari
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
" else
\n
"
" else
\n
"
...
@@ -243,6 +252,18 @@
...
@@ -243,6 +252,18 @@
" state = '';
\n
"
" state = '';
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
"/**
\n
"
" * Dumps a matrix to a string (useful for debug).
\n
"
" */
\n
"
"function dumpMatrix(matrix)
\n
"
"{
\n
"
" var s =
\"
[
\"
+ matrix.a +
\"
,
\"
+ matrix.c +
\"
,
\"
+ matrix.e +
\"\\
n
\"
+ matrix.b +
\"
,
\"
+ matrix.d +
\"
,
\"
+ matrix.f +
\"\\
n 0, 0, 1 ]
\"
;
\n
"
" return s;
\n
"
"}
\n
"
"
\n
"
"/**
\n
"
" * Handler for pan buttons
\n
"
" */
\n
"
"function handlePan(x,y)
\n
"
"function handlePan(x,y)
\n
"
"{
\n
"
"{
\n
"
" var g = svgDoc.getElementById(
\"
viewport
\"
);
\n
"
" var g = svgDoc.getElementById(
\"
viewport
\"
);
\n
"
...
@@ -250,22 +271,25 @@
...
@@ -250,22 +271,25 @@
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
"/**
\n
"
"/**
\n
"
" *
Dumps a matrix to a string (useful for debug).
\n
"
" *
Handle reset button
\n
"
" */
\n
"
" */
\n
"
"function
dumpMatrix(matrix)
\n
"
"function
handleReset()
\n
"
"{
\n
"
"{
\n
"
" var s =
\"
[
\"
+ matrix.a +
\"
,
\"
+ matrix.c +
\"
,
\"
+ matrix.e +
\"\\
n
\"
+ matrix.b +
\"
,
\"
+ matrix.d +
\"
,
\"
+ matrix.f +
\"\\
n 0, 0, 1 ]
\"
;
\n
"
" show();
\n
"
" return s;
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
"/**
\n
"
" * Handler for zoom buttons
\n
"
" */
\n
"
"function handleZoom(evt,direction)
\n
"
"function handleZoom(evt,direction)
\n
"
"{
\n
"
"{
\n
"
" var g = svgDoc.getElementById(
\"
viewport
\"
);
\n
"
" var g = svgDoc.getElementById(
\"
viewport
\"
);
\n
"
" var factor = direction=='in' ? zoomInFactor : zoomOutFactor;
\n
"
" var factor = direction=='in' ? zoomInFactor : zoomOutFactor;
\n
"
" var m = g.getCTM();
\n
"
" var m = g.getCTM();
\n
"
" var p = root.createSVGPoint();
\n
"
" var p = root.createSVGPoint();
\n
"
" p.x = windowWidth/2;
\n
"
" p.x = windowWidth/2;
\n
"
" p.y = windowHeight/2;
\n
"
" p.y = windowHeight/2;
\n
"
" doZoom(g,p,factor);
\n
"
" doZoom(g,p,factor);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
"
\n
"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment