From ce8facca2c23f4656747ad3a5b4a8db475855e27 Mon Sep 17 00:00:00 2001 From: dimitri Date: Sun, 22 Aug 2010 19:30:14 +0000 Subject: Release-1.7.1-20100822 --- INSTALL | 4 +- README | 4 +- configure | 2 +- doc/commands.doc | 2 +- doc/config.doc | 6 +- doc/language.doc | 60 +++++----- doc/maintainers.txt | 37 ++++--- doc/translator.py | 113 +++++++++---------- doc/translator_report.txt | 17 +-- qtools/qgstring.cpp | 2 +- src/classdef.cpp | 14 +-- src/code.l | 3 +- src/commentcnv.l | 11 ++ src/commentscan.l | 6 +- src/config.xml | 6 +- src/configoptions.cpp | 7 +- src/definition.cpp | 2 - src/docparser.cpp | 2 +- src/doctokenizer.l | 8 +- src/dot.cpp | 9 +- src/doxygen.cpp | 3 +- src/fortranscanner.l | 2 + src/htmldocvisitor.cpp | 2 +- src/htmlgen.cpp | 15 ++- src/latexgen.cpp | 98 ++++++++++++++--- src/logos.cpp | 273 ---------------------------------------------- src/memberdef.cpp | 5 +- src/membergroup.cpp | 4 +- src/memberlist.cpp | 8 +- src/pagedef.cpp | 2 + src/pre.l | 11 +- src/scanner.l | 10 +- src/translator_es.h | 2 +- src/translator_kr.h | 56 ++++++++++ src/util.cpp | 8 +- 35 files changed, 342 insertions(+), 472 deletions(-) diff --git a/INSTALL b/INSTALL index ee08aea..02320f7 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.7.1-20100728 +DOXYGEN Version 1.7.1-20100822 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (28 July 2010) +Dimitri van Heesch (22 August 2010) diff --git a/README b/README index 679c4f0..a9d69f1 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.7.1_20100728 +DOXYGEN Version 1.7.1_20100822 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (28 July 2010) +Dimitri van Heesch (dimitri@stack.nl) (22 August 2010) diff --git a/configure b/configure index afb6fa3..d2af1de 100755 --- a/configure +++ b/configure @@ -20,7 +20,7 @@ doxygen_version_minor=7 doxygen_version_revision=1 #NOTE: Setting version_mmn to "NO" will omit mmn info from the package. -doxygen_version_mmn=20100728 +doxygen_version_mmn=20100822 bin_dirs=`echo $PATH | sed -e "s/:/ /g"` diff --git a/doc/commands.doc b/doc/commands.doc index ed6f475..8884b36 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -634,7 +634,7 @@ Structural indicators \ref cmdprivate "\\private".
-\section cmdname \\name (header) +\section cmdname \\name [(header)] \addindex \\name diff --git a/doc/config.doc b/doc/config.doc index c2f988e..aff842a 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -1542,8 +1542,10 @@ and does not have live searching capabilities. \anchor cfg_enum_values_per_line
\c ENUM_VALUES_PER_LINE
\addindex ENUM_VALUES_PER_LINE - This tag can be used to set the number of enum values (range [1..20]) - that doxygen will group on one line in the generated HTML documentation. + This tag can be used to set the number of enum values (range [0,1..20]) + that doxygen will group on one line in the generated HTML documentation. + Note that a value of 0 will completely suppress the enum values from + appearing in the overview section. \anchor cfg_generate_treeview
\c GENERATE_TREEVIEW
diff --git a/doc/language.doc b/doc/language.doc index ec2fc27..df662a5 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -73,7 +73,7 @@ when the translator was updated. Catalan Maximiliano Pin
Albert Mora - max dot pin at bitroit dot com
[unreachable] + max dot pin at bitroit dot com
[unreachable] 1.6.3 @@ -96,13 +96,13 @@ when the translator was updated. Czech - Petr Přikryl + Petr Přikryl prikrylp at skil dot cz up-to-date Danish - Erik Søe Sørensen + Erik Søe Sørensen eriksoe+doxygen at daimi dot au dot dk 1.5.4 @@ -150,8 +150,8 @@ when the translator was updated. Hungarian - Ákos Kiss
Földvári György - akiss at users dot sourceforge dot net
[unreachable] + Ákos Kiss
Földvári György + akiss at users dot sourceforge dot net
[unreachable] 1.4.6 @@ -169,7 +169,7 @@ when the translator was updated. Japanese Hiroki Iseri
Ryunosuke Satoh
Kenji Nagamatsu
Iwasa Kazmi - goyoki at gmail dot com
sun594 at hotmail dot com
naga at joyful dot club dot ne dot jp
[unreachable] + goyoki at gmail dot com
sun594 at hotmail dot com
naga at joyful dot club dot ne dot jp
[unreachable] 1.6.0 @@ -181,8 +181,8 @@ when the translator was updated. Korean Kim Taedong
SooYoung Jung
Richard Kim - fly1004 at gmail dot com
jung5000 at gmail dot com
[unreachable] - 1.6.3 + fly1004 at gmail dot com
jung5000 at gmail dot com
[unreachable] + up-to-date KoreanEn @@ -193,7 +193,7 @@ when the translator was updated. Lithuanian Tomas Simonaitis
Mindaugas Radzius
Aidas Berukstis
-- contact lost -- - [unreachable]
[unreachable]
[unreachable]
+ [unreachable]
[unreachable]
[unreachable]
[Please, try to help to find someone.] 1.4.6 @@ -217,13 +217,13 @@ when the translator was updated. Polish Piotr Kaminski
Grzegorz Kowal
Krzysztof Kral - [unreachable]
[unreachable]
krzysztof dot kral at gmail dot com + [unreachable]
[unreachable]
krzysztof dot kral at gmail dot com 1.6.3 Portuguese Rui Godinho Lopes - [unreachable] + [resigned] 1.3.3 @@ -241,7 +241,7 @@ when the translator was updated. Serbian Dejan Milosavljevic - [unreachable] + [unreachable] 1.6.0 @@ -252,20 +252,20 @@ when the translator was updated. Slovak - -- searching for the maintainer -- - + Kali+Laco Švec
Petr Přikryl + the Slovak language advisors
prikrylp at skil dot cz up-to-date Slovene - Matjaž Ostroveršnik + Matjaž Ostroveršnik matjaz dot ostroversnik at ostri dot org 1.4.6 Spanish Bartomeu
Francisco Oltra Thennet
David Vaquero - bartomeu at loteria3cornella dot com
[unreachable]
david at grupoikusnet dot com + bartomeu at loteria3cornella dot com
[unreachable]
david at grupoikusnet dot com up-to-date @@ -282,8 +282,8 @@ when the translator was updated. Ukrainian - -- searching for the maintainer -- - + Olexij Tkatchenko
-- searching for the maintainer -- + [resigned]
[Please, try to help to find someone.] 1.4.1 @@ -325,9 +325,9 @@ when the translator was updated. \hline Croatian & Boris Bralo & {\tt\tiny boris dot bralo at gmail dot com} & up-to-date \\ \hline - Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp at skil dot cz} & up-to-date \\ + Czech & Petr Přikryl & {\tt\tiny prikrylp at skil dot cz} & up-to-date \\ \hline - Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen at daimi dot au dot dk} & 1.5.4 \\ + Danish & Erik Søe Sørensen & {\tt\tiny eriksoe+doxygen at daimi dot au dot dk} & 1.5.4 \\ \hline Dutch & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\ \hline @@ -343,8 +343,8 @@ when the translator was updated. \hline Greek & Paul Gessos & {\tt\tiny gessos dot paul at yahoo dot gr} & up-to-date \\ \hline - Hungarian & \'{A}kos Kiss & {\tt\tiny akiss at users dot sourceforge dot net} & 1.4.6 \\ - ~ & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny [unreachable] foldvari lost at cyberspace} & ~ \\ + Hungarian & Ákos Kiss & {\tt\tiny akiss at users dot sourceforge dot net} & 1.4.6 \\ + ~ & Földvári György & {\tt\tiny [unreachable] foldvari lost at cyberspace} & ~ \\ \hline Indonesian & Hendy Irawan & {\tt\tiny ceefour at gauldong dot net} & 1.4.6 \\ \hline @@ -358,7 +358,7 @@ when the translator was updated. \hline JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\ \hline - Korean & Kim Taedong & {\tt\tiny fly1004 at gmail dot com} & 1.6.3 \\ + Korean & Kim Taedong & {\tt\tiny fly1004 at gmail dot com} & up-to-date \\ ~ & SooYoung Jung & {\tt\tiny jung5000 at gmail dot com} & ~ \\ ~ & Richard Kim & {\tt\tiny [unreachable] ryk at dspwiz dot com} & ~ \\ \hline @@ -367,7 +367,7 @@ when the translator was updated. Lithuanian & Tomas Simonaitis & {\tt\tiny [unreachable] haden at homelan dot lt} & 1.4.6 \\ ~ & Mindaugas Radzius & {\tt\tiny [unreachable] mindaugasradzius at takas dot lt} & ~ \\ ~ & Aidas Berukstis & {\tt\tiny [unreachable] aidasber at takas dot lt} & ~ \\ - ~ & -- contact lost -- & {\tt\tiny } & ~ \\ + ~ & -- contact lost -- & {\tt\tiny [Please, try to help to find someone.]} & ~ \\ \hline Macedonian & Slave Jovanovski & {\tt\tiny slavejovanovski at yahoo dot com} & 1.6.0 \\ \hline @@ -376,10 +376,10 @@ when the translator was updated. Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh at gmail dot com} & up-to-date \\ \hline Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl} & 1.6.3 \\ - ~ & Grzegorz Kowal & {\tt\tiny [unreachable] g\_kowal at poczta dot onet dot pl} & ~ \\ + ~ & Grzegorz Kowal & {\tt\tiny [unreachable] g_kowal at poczta dot onet dot pl} & ~ \\ ~ & Krzysztof Kral & {\tt\tiny krzysztof dot kral at gmail dot com} & ~ \\ \hline - Portuguese & Rui Godinho Lopes & {\tt\tiny [unreachable] ruiglopes at yahoo dot com} & 1.3.3 \\ + Portuguese & Rui Godinho Lopes & {\tt\tiny [resigned] rgl at ruilopes dot com} & 1.3.3 \\ \hline Romanian & Ionut Dumitrascu & {\tt\tiny reddumy at yahoo dot com} & 1.6.0 \\ ~ & Alexandru Iosup & {\tt\tiny aiosup at yahoo dot com} & ~ \\ @@ -390,9 +390,10 @@ when the translator was updated. \hline SerbianCyrilic & Nedeljko Stefanovic & {\tt\tiny stenedjo at yahoo dot com} & 1.6.0 \\ \hline - Slovak & -- searching for the maintainer -- & {\tt\tiny } & up-to-date \\ + Slovak & Kali+Laco Švec & {\tt\tiny the Slovak language advisors} & up-to-date \\ + ~ & Petr Přikryl & {\tt\tiny prikrylp at skil dot cz} & ~ \\ \hline - Slovene & Matja\v{z} Ostrover\v{s}nik & {\tt\tiny matjaz dot ostroversnik at ostri dot org} & 1.4.6 \\ + Slovene & Matjaž Ostroveršnik & {\tt\tiny matjaz dot ostroversnik at ostri dot org} & 1.4.6 \\ \hline Spanish & Bartomeu & {\tt\tiny bartomeu at loteria3cornella dot com} & up-to-date \\ ~ & Francisco Oltra Thennet & {\tt\tiny [unreachable] foltra at puc dot cl} & ~ \\ @@ -402,7 +403,8 @@ when the translator was updated. \hline Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3 at yahoo dot com} & up-to-date \\ \hline - Ukrainian & -- searching for the maintainer -- & {\tt\tiny } & 1.4.1 \\ + Ukrainian & Olexij Tkatchenko & {\tt\tiny [resigned] olexij at tkatchenko dot com} & 1.4.1 \\ + ~ & -- searching for the maintainer -- & {\tt\tiny [Please, try to help to find someone.]} & ~ \\ \hline Vietnamese & Dang Minh Tuan & {\tt\tiny tuanvietkey at gmail dot com} & 1.6.0 \\ \hline diff --git a/doc/maintainers.txt b/doc/maintainers.txt index e7a1028..04ec526 100644 --- a/doc/maintainers.txt +++ b/doc/maintainers.txt @@ -1,16 +1,16 @@ % $Id$ % -% Comments start with % sign at the beginning. -% XML entities like ä are used for special characters. +% The text is in UTF-8. Comments start with % sign at the beginning. % There is one record for each language. The records are separated % by the empty line and they do not contain empty lines. % First line of the record identifies the translator class for the language. % The following one or more lines contain information about % the maintainer(s) for the language (one line, one maintainer) % in the form: -% If the is prefixed [unreachable] it is not displayed in the table +% If the is prefixed [some_text] it is not displayed in the table % of maintainers in the Doxygen documentation, nor it is used when building -% the mailto.txt by translator.py. +% the mailto.txt by translator.py. The mark is displayed in the documentation +% instead. TranslatorAfrikaans Johan Prinsloo: johan at zippysnoek dot com @@ -37,10 +37,10 @@ TranslatorCroatian Boris Bralo: boris dot bralo at gmail dot com TranslatorCzech -Petr Přikryl: prikrylp at skil dot cz +Petr Přikryl: prikrylp at skil dot cz TranslatorDanish -Erik Søe Sørensen: eriksoe+doxygen at daimi dot au dot dk +Erik Søe Sørensen: eriksoe+doxygen at daimi dot au dot dk TranslatorDutch Dimitri van Heesch: dimitri at stack dot nl @@ -64,8 +64,8 @@ TranslatorGreek Paul Gessos: gessos dot paul at yahoo dot gr TranslatorHungarian -Ákos Kiss: akiss at users dot sourceforge dot net -Földvári György: [unreachable] foldvari lost at cyberspace +Ákos Kiss: akiss at users dot sourceforge dot net +Földvári György: [unreachable] foldvari lost at cyberspace TranslatorIndonesian Hendy Irawan: ceefour at gauldong dot net @@ -89,7 +89,7 @@ TranslatorLithuanian Tomas Simonaitis: [unreachable] haden at homelan dot lt Mindaugas Radzius: [unreachable] mindaugasradzius at takas dot lt Aidas Berukstis: [unreachable] aidasber at takas dot lt --- contact lost --: +-- contact lost --: [Please, try to help to find someone.] TranslatorNorwegian Lars Erik Jordet: lejordet at gmail dot com @@ -106,7 +106,7 @@ Grzegorz Kowal: [unreachable] g_kowal at poczta dot onet dot pl Krzysztof Kral: krzysztof dot kral at gmail dot com TranslatorPortuguese -Rui Godinho Lopes: [unreachable] ruiglopes at yahoo dot com +Rui Godinho Lopes: [resigned] rgl at ruilopes dot com TranslatorRomanian Ionut Dumitrascu: reddumy at yahoo dot com @@ -122,11 +122,12 @@ TranslatorSerbianCyrilic Nedeljko Stefanovic: stenedjo at yahoo dot com TranslatorSlovak -% Stanislav Kudláč: [unreachable] skudlac at pobox dot sk --- searching for the maintainer --: +% Stanislav Kudláč: [resigned] skudlac at pobox dot sk +Kali+Laco Švec: the Slovak language advisors +Petr Přikryl: prikrylp at skil dot cz TranslatorSlovene -Matjaž Ostroveršnik: matjaz dot ostroversnik at ostri dot org +Matjaž Ostroveršnik: matjaz dot ostroversnik at ostri dot org TranslatorSpanish Bartomeu: bartomeu at loteria3cornella dot com @@ -136,13 +137,13 @@ David Vaquero: david at grupoikusnet dot com TranslatorSwedish Mikael Hallin: mikaelhallin at yahoo dot se +TranslatorTurkish +Emin Ilker Cetinbas: niw3 at yahoo dot com + TranslatorUkrainian -% (resigned) Olexij Tkatchenko: olexij at tkatchenko dot com --- searching for the maintainer --: +Olexij Tkatchenko: [resigned] olexij at tkatchenko dot com +-- searching for the maintainer --: [Please, try to help to find someone.] TranslatorVietnamese Dang Minh Tuan: tuanvietkey at gmail dot com -TranslatorTurkish -Emin Ilker Cetinbas: niw3 at yahoo dot com - diff --git a/doc/translator.py b/doc/translator.py index 14f8c3c..995f910 100644 --- a/doc/translator.py +++ b/doc/translator.py @@ -56,10 +56,16 @@ 2010/03/03 - Added [unreachable] prefix used in maintainers.txt. 2010/05/28 - BOM skipped; minor code cleaning. 2010/05/31 - e-mail mangled already in maintainers.txt + 2010/08/20 - maintainers.txt to UTF-8, related processin of unicode strings + - [any mark] introduced instead of [unreachable] only + - marks hihglighted in HTML """ from __future__ import generators -import os, re, sys +import codecs +import os +import re +import sys def fill(s): @@ -1535,10 +1541,10 @@ class TrManager: """Returns the list of maintainer emails. The method returns the list of e-mail adresses for the translator - class, but only the addresses that were not marked as [unreachable].""" + class, but only the addresses that were not marked as [xxx].""" lst = [] for m in self.__maintainersDic[classId]: - if not m[1].startswith('[unreachable]'): + if not m[1].startswith('['): email = m[1] email = email.replace(' at ', '@') # Unmangle the mangled e-mail email = email.replace(' dot ', '.') @@ -1737,7 +1743,7 @@ class TrManager: self.lastModificationTime = tim # Process the content of the maintainers file. - f = open(fname) + f = codecs.open(fname, 'r', 'utf-8') inside = False # inside the record for the language lineReady = True classId = None @@ -1748,18 +1754,18 @@ class TrManager: lineReady = line != '' # when eof, then line == '' line = line.strip() # eof should also behave as separator - if line != '' and line[0] == '%': # skip the comment line + if line != u'' and line[0] == u'%': # skip the comment line continue if not inside: # if outside of the record - if line != '': # should be language identifier + if line != u'': # should be language identifier classId = line maintainersLst = [] inside = True # Otherwise skip empty line that do not act as separator. else: # if inside the record - if line == '': # separator found + if line == u'': # separator found inside = False else: # If it is the first maintainer, create the empty list. @@ -1767,9 +1773,9 @@ class TrManager: self.__maintainersDic[classId] = [] # Split the information about the maintainer and append - # the tuple. The address may be prefixed '[unreachable]'. - # This will be processed later. - lst = line.split(':', 1) + # the tuple. The address may be prefixed '[unreachable]' + # or whatever '[xxx]'. This will be processed later. + lst = line.split(u':', 1) assert(len(lst) == 2) t = (lst[0].strip(), lst[1].strip()) self.__maintainersDic[classId].append(t) @@ -1801,32 +1807,33 @@ class TrManager: # # Read the template of the documentation, and remove the first # attention lines. - f = open(fTplName) - line = f.readline() - while line[0] != '/': - line = f.readline() - doctpl = line + f.read() + f = codecs.open(fTplName, 'r', 'utf-8') + doctpl = f.read() f.close() + pos = doctpl.find(u'/***') + assert pos != -1 + doctpl = doctpl[pos:] + # Fill the tplDic by symbols that will be inserted into the # document template. tplDic = {} - s = 'Do not edit this file. It was generated by the %s script.' % self.script_name + s = u'Do not edit this file. It was generated by the %s script.' % self.script_name tplDic['editnote'] = s tplDic['doxVersion'] = self.doxVersion tplDic['supportedLangReadableStr'] = self.supportedLangReadableStr tplDic['translatorReportFileName'] = self.translatorReportFileName - ahref = 'doxygen/doc/' + self.translatorReportFileName - ahref += '' + ahref = u'doxygen/doc/' + self.translatorReportFileName + ahref += u'' tplDic['translatorReportLink'] = ahref tplDic['numLangStr'] = str(self.numLang) # Define templates for HTML table parts of the documentation. - htmlTableTpl = '''\ + htmlTableTpl = u'''\ \\htmlonly @@ -1849,8 +1856,8 @@ class TrManager: \\endhtmlonly ''' htmlTableTpl = dedent(htmlTableTpl) - htmlTrTpl = '\n %s\n ' - htmlTdTpl = '\n ' + htmlTrTpl = u'\n %s\n ' + htmlTdTpl = u'\n ' # Loop through transl objects in the order of sorted readable names # and add generate the content of the HTML table. @@ -1871,28 +1878,26 @@ class TrManager: classId = obj.classId[:-2] if self.__translDic.has_key(classId): lang = self.__translDic[classId].langReadable - mm = 'see the %s language' % lang - ee = ' ' + mm = u'see the %s language' % lang + ee = u' ' if not mm and self.__maintainersDic.has_key(obj.classId): lm = [ m[0] for m in self.__maintainersDic[obj.classId] ] - mm = '
'.join(lm) + mm = u'
'.join(lm) - # Unreachable adresses will not be displayed at all. + # The marked adresses (they start with the mark '[unreachable]', + # '[resigned]', whatever '[xxx]') will not be displayed at all. + # Only the mark will be used instead. + rexMark = re.compile(ur'(?P\[.*?\])') le = [] - for m in self.__maintainersDic[obj.classId]: - address = m[1] - if address.startswith('[unreachable]'): - address = '[unreachable]' + for maintainer in self.__maintainersDic[obj.classId]: + address = maintainer[1] + m = rexMark.search(address) + if m is not None: + address = u''\ + + m.group(u'mark') + u'' le.append(address) - ee = '
'.join(le) - - # Replace the entity references. - if mm: - mm = mm.replace('č', 'č') - mm = mm.replace('ř', 'ř') - mm = mm.replace('š', 'š') - mm = mm.replace('ž', 'ž') + ee = u'
'.join(le) # Append the maintainer and e-mail elements. lst.append(htmlTdTpl % mm) @@ -1908,7 +1913,7 @@ class TrManager: htmlTable = htmlTableTpl % (''.join(trlst)) # Define templates for LaTeX table parts of the documentation. - latexTableTpl = r''' + latexTableTpl = ur''' \latexonly \footnotesize \begin{longtable}{|l|l|l|l|} @@ -1922,7 +1927,7 @@ class TrManager: \endlatexonly ''' latexTableTpl = dedent(latexTableTpl) - latexLineTpl = '\n' + r' %s & %s & {\tt\tiny %s} & %s \\' + latexLineTpl = u'\n' + r' %s & %s & {\tt\tiny %s} & %s \\' # Loop through transl objects in the order of sorted readable names # and add generate the content of the LaTeX table. @@ -1944,8 +1949,8 @@ class TrManager: classId = obj.classId[:-2] if self.__translDic.has_key(classId): langNE = self.__translDic[classId].langReadable - maintainer = 'see the %s language' % langNE - email = '~' + maintainer = u'see the %s language' % langNE + email = u'~' if not maintainer and self.__maintainersDic.has_key(obj.classId): lm = [ m[0] for m in self.__maintainersDic[obj.classId] ] @@ -1956,38 +1961,26 @@ class TrManager: # Use the template to produce the line of the table and insert # the hline plus the constructed line into the table content. - trlst.append('\n \\hline') + trlst.append(u'\n \\hline') trlst.append(latexLineTpl % (lang, maintainer, email, status)) # List the other maintainers for the language. Do not set # lang and status for them. - lang = '~' - status = '~' + lang = u'~' + status = u'~' for m in maintainers[1:]: maintainer = m[0] email = m[1] trlst.append(latexLineTpl % (lang, maintainer, email, status)) # Join the table lines and insert into the template. - latexTable = latexTableTpl % (''.join(trlst)) + latexTable = latexTableTpl % (u''.join(trlst)) - # Do the LaTeX replacements. - latexTable = latexTable.replace('á', "\\'{a}") - latexTable = latexTable.replace('Á', "\\'{A}") - latexTable = latexTable.replace('ä', '\\"{a}') - latexTable = latexTable.replace('ö', '\\"{o}') - latexTable = latexTable.replace('ø', '\\o{}') - latexTable = latexTable.replace('č', '\\v{c}') - latexTable = latexTable.replace('ř', '\\v{r}') - latexTable = latexTable.replace('š', '\\v{s}') - latexTable = latexTable.replace('ž', '\\v{z}') - latexTable = latexTable.replace('_', '\\_') - # Put the HTML and LaTeX parts together and define the dic item. - tplDic['informationTable'] = htmlTable + '\n' + latexTable + tplDic['informationTable'] = htmlTable + u'\n' + latexTable # Insert the symbols into the document template and write it down. - f = open(fDocName, 'w') + f = codecs.open(fDocName, 'w', 'utf-8') f.write(doctpl % tplDic) f.close() diff --git a/doc/translator_report.txt b/doc/translator_report.txt index a79f1da..ba7f4ba 100644 --- a/doc/translator_report.txt +++ b/doc/translator_report.txt @@ -10,7 +10,7 @@ Persian, Polish, Portuguese, Romanian, Russian, Serbian, SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. -Of them, 10 translators are up-to-date, 28 translators are based on +Of them, 11 translators are up-to-date, 27 translators are based on some adapter class, and 2 are English based. ---------------------------------------------------------------------- @@ -25,6 +25,7 @@ still may be some details listed even for them: TranslatorDutch TranslatorEnglish TranslatorGreek + TranslatorKorean -- Change the base class to Translator. TranslatorPersian -- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs() TranslatorSlovak TranslatorSpanish -- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs() @@ -37,9 +38,6 @@ version when the class was last updated and number of methods that must be implemented to become up-to-date: TranslatorPolish 1.6.3 4 methods to implement (1 %) - TranslatorKorean 1.6.3 4 methods to implement (1 %) - Note: Reimplementation using UTF-8 suggested. - TranslatorGerman 1.6.3 4 methods to implement (1 %) TranslatorFrench 1.6.3 4 methods to implement (1 %) Note: Reimplementation using UTF-8 suggested. @@ -504,17 +502,10 @@ TranslatorJapaneseEn (TranslatorEnglish) 220 methods to implement (97 %) virtual QCString latexLanguageSupportCommand() -TranslatorKorean (TranslatorAdapter_1_6_3) 4 methods to implement (1 %) +TranslatorKorean (TranslatorAdapter_1_6_3) ---------------- - Implements 221 of the required methods (98 %). - - Missing methods (should be implemented): - - virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) - virtual QCString trFileIn(const char * name) - virtual QCString trDirDependency(const char * name) - virtual QCString trIncludesFileIn(const char * name) + Implements 225 of the required methods (100 %). TranslatorKoreanEn (TranslatorEnglish) 220 methods to implement (97 %) diff --git a/qtools/qgstring.cpp b/qtools/qgstring.cpp index f42eede..85dd879 100644 --- a/qtools/qgstring.cpp +++ b/qtools/qgstring.cpp @@ -118,7 +118,7 @@ bool QGString::resize( uint newlen ) DBG_STR(("%p: 2.QGString::resize() %d:%s\n",this,m_len,m_data?m_data:"")); return FALSE; } - m_data[newlen-1]='\0'; + m_data[newlen]='\0'; m_len = qstrlen(m_data); DBG_STR(("%p: 3.QGString::resize() %d:%s\n",this,m_len,m_data?m_data:"")); return TRUE; diff --git a/src/classdef.cpp b/src/classdef.cpp index 5911b35..04f8934 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -2163,7 +2163,7 @@ bool ClassDef::hasDocumentation() const bool ClassDef::isBaseClass(ClassDef *bcd, bool followInstances,int level) { bool found=FALSE; - //printf("isBaseClass(cd=%s) looking for %s\n",cd->name().data(),bcd->name().data()); + //printf("isBaseClass(cd=%s) looking for %s\n",name().data(),bcd->name().data()); if (level>256) { err("Possible recursive class relation while inside %s and looking for %s\n",qPrint(name()),qPrint(bcd->name())); @@ -2172,20 +2172,18 @@ bool ClassDef::isBaseClass(ClassDef *bcd, bool followInstances,int level) } if (baseClasses()) { - //BaseClassListIterator bcli(*baseClasses()); - //for ( ; bcli.current() && !found ; ++bcli) - BaseClassDef *bcdi = baseClasses()->first(); - while (bcdi) + // Beware: trying to optimise the iterator away using ->first() & ->next() + // causes bug 625531 + BaseClassListIterator bcli(*baseClasses()); + for ( ; bcli.current() && !found ; ++bcli) { - //ClassDef *ccd=bcli.current()->classDef; - ClassDef *ccd=bcdi->classDef; + ClassDef *ccd=bcli.current()->classDef; if (!followInstances && ccd->templateMaster()) ccd=ccd->templateMaster(); //printf("isBaseClass() baseclass %s\n",ccd->name().data()); if (ccd==bcd) found=TRUE; else found=ccd->isBaseClass(bcd,followInstances,level+1); - bcdi = baseClasses()->next(); } } return found; diff --git a/src/code.l b/src/code.l index ddc6763..1543f53 100644 --- a/src/code.l +++ b/src/code.l @@ -3408,7 +3408,8 @@ void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s, g_bracketCount = 0; if (!g_exampleName.isEmpty()) { - g_exampleFile = convertNameToFile(g_exampleName+"-example"); + g_exampleFile = convertNameToFile(g_exampleName+"-example",FALSE,TRUE); + //printf("g_exampleFile=%s\n",g_exampleFile.data()); } g_includeCodeFragment = inlineFragment; //printf("** exBlock=%d exName=%s include=%d\n",exBlock,exName,inlineFragment); diff --git a/src/commentcnv.l b/src/commentcnv.l index ab56812..660dae6 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -468,6 +468,17 @@ void replaceComment(int offset); \n { /* new line in verbatim block */ copyToOutput(yytext,yyleng); } +^[ \t]*"///" { + if (g_blockName=="dot" || g_blockName=="msc" || g_blockName.at(0)=='f') + { + // see bug 487871, strip /// from dot images and formulas. + copyToOutput(" ",3); + } + else // even slashes are verbatim (e.g. \verbatim, \code) + { + REJECT; + } + } . { /* any other character */ copyToOutput(yytext,yyleng); } diff --git a/src/commentscan.l b/src/commentscan.l index 4ad0590..892ac71 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -1260,7 +1260,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" /* --------- handle arguments of {def,add,weak}group commands --------- */ -{ID}(".html"?) { // group name +{LABELID}(".html"?) { // group name current->name = yytext; //lastDefGroup.groupname = yytext; //lastDefGroup.pri = current->groupingPri(); @@ -1354,7 +1354,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" /* --------- handle arguments of the xrefitem command ------------ */ -{ID} { // first argument +{LABELID} { // first argument newXRefItemKey=yytext; setOutput(OutputXRef); BEGIN(XRefItemParam2); @@ -1803,7 +1803,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" /* ----- handle argument of ingroup command ------- */ -{ID} { // group id +{LABELID} { // group id current->groups->append( new Grouping(yytext, Grouping::GROUPING_INGROUP) ); diff --git a/src/config.xml b/src/config.xml index 47c9148..17d3644 100644 --- a/src/config.xml +++ b/src/config.xml @@ -943,9 +943,11 @@ top of each HTML page. The value NO (the default) enables the index and the value YES disables it. ' defval='0' depends='GENERATE_HTML'/>
" << endl; + t << "" << endl; t << " " << endl; + t << " " << endl; t << " " << endl; t << " " << endl; t << " " << endl; t << " " << endl; - t << "
%s
%s"; if (closeBracket) t << " )"; - t << " "; } else { - t << " 
"; if (closeBracket) t << ")"; t << ""; + t << " "; } } else diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 85e2905..f75b76a 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -182,7 +182,8 @@ static void writeDefaultHeaderPart1(FTextStream &t) t << "]{"; if (Config_getBool("COMPACT_LATEX")) t << "article"; else t << "book"; t << "}\n"; - if (paperType=="a4wide") t << "\\usepackage{a4wide}\n"; + // the next package is obsolete (see bug 563698) + //if (paperType=="a4wide") t << "\\usepackage{a4wide}\n"; t << "\\usepackage{makeidx}\n" "\\usepackage{graphicx}\n" "\\usepackage{multicol}\n" @@ -193,10 +194,10 @@ static void writeDefaultHeaderPart1(FTextStream &t) "\\usepackage{alltt}\n" //"\\usepackage{ae,aecompl,aeguill}\n" ; - if (Config_getBool("USE_PDFLATEX")) - { - t << "\\usepackage{times}" << endl; - } + //if (Config_getBool("USE_PDFLATEX")) + //{ + // t << "\\usepackage{times}" << endl; + //} if (Config_getBool("PDF_HYPERLINKS")) { t << "\\usepackage{ifpdf}" << endl @@ -229,6 +230,9 @@ static void writeDefaultHeaderPart1(FTextStream &t) // if the command is empty, no output is needed. t << sLanguageSupportCommand << endl; } + t << "\\usepackage{mathptmx}\n"; + t << "\\usepackage[scaled=.90]{helvet}\n"; + t << "\\usepackage{courier}\n"; t << "\\usepackage{doxygen}\n"; // define option for listings @@ -308,6 +312,49 @@ static void writeDefaultStyleSheetPart1(FTextStream &t) "\\RequirePackage{color}\n" "\\RequirePackage{fancyhdr}\n" "\\RequirePackage{verbatim}\n\n"; + + t << "% Use helvetica font instead of times roman\n" + "\\RequirePackage{helvet}\n" + "\\RequirePackage{sectsty}\n" + "\\RequirePackage{tocloft}\n" + "\\allsectionsfont{\\usefont{OT1}{phv}{bc}{n}\\selectfont}\n" + "\\renewcommand{\\cftchapfont}{%\n" + " \\fontsize{11}{13}\\usefont{OT1}{phv}{bc}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cftchappagefont}{%\n" + " \\fontsize{11}{13}\\usefont{OT1}{phv}{c}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cftsecfont}{%\n" + " \\fontsize{10}{12}\\usefont{OT1}{phv}{c}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cftsecpagefont}{%\n" + " \\fontsize{10}{12}\\usefont{OT1}{phv}{c}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cftsubsecfont}{%\n" + " \\fontsize{10}{12}\\usefont{OT1}{phv}{c}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cftsubsecpagefont}{%\n" + " \\fontsize{10}{12}\\usefont{OT1}{phv}{c}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cftsubsubsecfont}{%\n" + " \\fontsize{9}{11}\\usefont{OT1}{phv}{c}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cftsubsubsecpagefont}{%\n" + " \\fontsize{9}{11}\\usefont{OT1}{phv}{c}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cftparafont}{%\n" + " \\fontsize{9}{11}\\usefont{OT1}{phv}{c}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cftparapagefont}{%\n" + " \\fontsize{9}{11}\\usefont{OT1}{phv}{c}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\cfttoctitlefont}{%\n" + " \\fontsize{20}{22}\\usefont{OT1}{phv}{b}{n}\\selectfont\n" + "}\n" + "\\renewcommand{\\rmdefault}{phv}\n" + "\\renewcommand{\\bfdefault}{bc}\n" + "\n\n"; + t << "% Setup fancy headings\n" "\\pagestyle{fancyplain}\n" "\\newcommand{\\clearemptydoublepage}{%\n" @@ -320,25 +367,42 @@ static void writeDefaultStyleSheetPart1(FTextStream &t) t << "\\renewcommand{\\sectionmark}[1]{%\n" " \\markright{\\thesection\\ #1}%\n" "}\n"; - t << "\\lhead[\\fancyplain{}{\\bfseries\\thepage}]{%\n" - " \\fancyplain{}{\\bfseries\\rightmark}%\n" - "}\n"; - t << "\\rhead[\\fancyplain{}{\\bfseries\\leftmark}]{%\n" - " \\fancyplain{}{\\bfseries\\thepage}%\n" - "}\n"; - t << "\\rfoot[\\fancyplain{}{\\bfseries\\scriptsize%\n "; + + //t << "\\lhead[\\fancyplain{}{\\bfseries\\thepage}]{%\n" + // " \\fancyplain{}{\\bfseries\\rightmark}%\n" + // "}\n"; + //t << "\\rhead[\\fancyplain{}{\\bfseries\\leftmark}]{%\n" + // " \\fancyplain{}{\\bfseries\\thepage}%\n" + // "}\n"; + //t << "\\rfoot[\\fancyplain{}{\\bfseries\\scriptsize%\n "; + t << "\\fancyhead[LE]{\\fancyplain{}{\\bfseries\\thepage}}\n"; + t << "\\fancyhead[CE]{\\fancyplain{}{}}\n"; + t << "\\fancyhead[RE]{\\fancyplain{}{\\bfseries\\leftmark}}\n"; + t << "\\fancyhead[LO]{\\fancyplain{}{\\bfseries\\rightmark}}\n"; + t << "\\fancyhead[CO]{\\fancyplain{}{}}\n"; + t << "\\fancyhead[RO]{\\fancyplain{}{\\bfseries\\thepage}}\n"; + + t << "\\fancyfoot[LE]{\\fancyplain{}{}}\n"; + t << "\\fancyfoot[CE]{\\fancyplain{}{}}\n"; + t << "\\fancyfoot[RE]{\\fancyplain{}{\\bfseries\\scriptsize "; } static void writeDefaultStyleSheetPart2(FTextStream &t) { - t << "\\lfoot[]{\\fancyplain{}{\\bfseries\\scriptsize%\n "; + t << "}}\n"; + t << "\\fancyfoot[LO]{\\fancyplain{}{\\bfseries\\scriptsize "; + //t << "\\lfoot[]{\\fancyplain{}{\\bfseries\\scriptsize%\n "; + } static void writeDefaultStyleSheetPart3(FTextStream &t) { static bool latexSourceCode = Config_getBool("LATEX_SOURCE_CODE"); t << "}}\n"; - t << "\\cfoot{}\n\n"; + //t << "\\cfoot{}\n\n"; + t << "\\fancyfoot[CO]{\\fancyplain{}{}}\n"; + t << "\\fancyfoot[RO]{\\fancyplain{}{}}\n"; + t << "%---------- Internal commands used in this style file ----------------\n\n"; t << "% Generic environment used by all paragraph-based environments defined\n" "% below. Note that the command \\title{...} needs to be defined inside\n" @@ -623,7 +687,8 @@ static void writeDefaultStyleSheetPart3(FTextStream &t) t << "\\setlength{\\parindent}{0cm}\n"; t << "\\setlength{\\parskip}{0.2cm}\n"; t << "\\addtocounter{secnumdepth}{1}\n"; - t << "\\sloppy\n"; + // \sloppy should not be used, see bug 563698 + //t << "\\sloppy\n"; t << "\\usepackage[T1]{fontenc}\n"; t << "\\makeatletter\n"; t << "\\renewcommand{\\paragraph}{\\@startsection{paragraph}{4}{0ex}%\n"; @@ -1128,14 +1193,11 @@ void LatexGenerator::writeStyleInfo(int part) break; case 2: { - //t << " Dimitri van Heesch \\copyright~1997-2010"; - t << "}]{}\n"; writeDefaultStyleSheetPart2(t); } break; case 4: { - //t << " Dimitri van Heesch \\copyright~1997-2010"; writeDefaultStyleSheetPart3(t); endPlainFile(); } diff --git a/src/logos.cpp b/src/logos.cpp index 112fb8d..f7364a5 100644 --- a/src/logos.cpp +++ b/src/logos.cpp @@ -21,279 +21,6 @@ #include #include -#if 0 -unsigned char doxygen_png_data[] = { - 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, - 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x2d, - 0x08, 0x03, 0x00, 0x00, 0x00, 0x6f, 0x6b, 0x3e, 0xc2, 0x00, 0x00, 0x00, - 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xd6, 0xd8, 0xd4, 0x4f, 0x58, - 0x32, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, - 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x71, 0xc9, - 0x65, 0x3c, 0x00, 0x00, 0x00, 0x5d, 0x50, 0x4c, 0x54, 0x45, 0x00, 0x00, - 0x00, 0xc7, 0xbe, 0xcf, 0x22, 0x26, 0xa9, 0xc8, 0xce, 0xef, 0xb6, 0xbb, - 0xd6, 0xd3, 0xda, 0xfa, 0x93, 0xa2, 0xde, 0xa0, 0xac, 0xe0, 0xb6, 0xc2, - 0xf5, 0x7f, 0x87, 0xa7, 0xd5, 0xd9, 0xea, 0xc9, 0xca, 0xce, 0xe1, 0xe2, - 0xe6, 0x7b, 0x8e, 0xd4, 0x8d, 0xa1, 0xeb, 0x88, 0x99, 0xd7, 0xa0, 0xb2, - 0xf8, 0xa7, 0xac, 0xb9, 0xc0, 0xc0, 0xb1, 0xdd, 0xdd, 0xce, 0xf9, 0xf9, - 0xe9, 0xf5, 0xf5, 0xe7, 0xeb, 0xeb, 0xe5, 0x45, 0x44, 0x39, 0xd7, 0xd6, - 0xcb, 0x68, 0x67, 0x5d, 0x1f, 0x1d, 0x13, 0x5f, 0x58, 0x3c, 0x40, 0x3a, - 0x23, 0x6d, 0x68, 0x55, 0xff, 0xff, 0xff, 0xdd, 0xc0, 0x7f, 0x31, 0x00, - 0x00, 0x00, 0x1f, 0x74, 0x52, 0x4e, 0x53, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x00, 0xcd, 0x19, 0x76, 0x10, 0x00, 0x00, 0x03, 0xff, 0x49, 0x44, - 0x41, 0x54, 0x78, 0xda, 0x62, 0x90, 0x43, 0x00, 0x06, 0x08, 0x90, 0xa3, - 0x3a, 0x00, 0x08, 0x20, 0x64, 0x23, 0x19, 0x84, 0x84, 0x85, 0x85, 0x85, - 0x68, 0x60, 0x09, 0x40, 0x00, 0xa1, 0x58, 0x22, 0x2c, 0x2a, 0x2a, 0x2a, - 0x4c, 0x03, 0x4b, 0x00, 0x02, 0x88, 0x2e, 0x96, 0x00, 0x04, 0x10, 0x5d, - 0x2c, 0x01, 0x08, 0x20, 0xba, 0x58, 0x02, 0x10, 0x40, 0x74, 0xb1, 0x04, - 0x20, 0x80, 0xe8, 0x62, 0x09, 0x40, 0x00, 0xd1, 0xc5, 0x12, 0x80, 0x00, - 0x42, 0xb5, 0x44, 0x84, 0x36, 0x96, 0x00, 0x04, 0x10, 0x9a, 0x25, 0x22, - 0x22, 0xb4, 0xb0, 0x04, 0x20, 0x80, 0x18, 0x90, 0x0b, 0x14, 0x98, 0x25, - 0x0c, 0x0c, 0x88, 0x12, 0x06, 0x99, 0x42, 0x14, 0x3a, 0x48, 0xa2, 0x88, - 0xb2, 0x08, 0xc1, 0x66, 0x40, 0x95, 0x00, 0x08, 0x20, 0x88, 0x52, 0x50, - 0x79, 0x02, 0x04, 0x22, 0x10, 0x4b, 0x60, 0x5c, 0x50, 0x11, 0x03, 0x62, - 0x43, 0x28, 0x21, 0x49, 0x06, 0x49, 0x21, 0x68, 0xa9, 0x03, 0x11, 0x85, - 0xeb, 0x83, 0x28, 0x81, 0xf1, 0x84, 0x90, 0xc4, 0x21, 0xea, 0x01, 0x02, - 0x88, 0x01, 0xac, 0x43, 0x04, 0x01, 0x84, 0x19, 0xc4, 0x85, 0xe0, 0x6c, - 0x21, 0x30, 0x5b, 0x58, 0x5c, 0x4a, 0x5c, 0x18, 0x24, 0x03, 0x54, 0x08, - 0x0e, 0x4d, 0x06, 0x88, 0x28, 0x92, 0x3e, 0x61, 0x06, 0x24, 0x53, 0x84, - 0x18, 0x90, 0x0c, 0x04, 0xd9, 0x02, 0x10, 0x40, 0x0c, 0xd0, 0xa8, 0x40, - 0x52, 0x2e, 0x24, 0x82, 0xac, 0x04, 0x4c, 0x4a, 0x42, 0x02, 0x52, 0x18, - 0xa2, 0x89, 0x41, 0x10, 0xcc, 0x10, 0x47, 0x31, 0x0a, 0xac, 0x0b, 0x16, - 0x18, 0xc2, 0x28, 0x46, 0xc8, 0x01, 0x04, 0x10, 0x83, 0x1c, 0xd4, 0x50, - 0x68, 0x68, 0xc1, 0x54, 0xc0, 0x03, 0x0f, 0xa2, 0x19, 0x84, 0x25, 0x21, - 0x1e, 0x60, 0x80, 0x26, 0x10, 0x71, 0xb0, 0x25, 0x10, 0x75, 0xc2, 0x0c, - 0x50, 0x07, 0x20, 0xb9, 0x06, 0xa2, 0x0b, 0xac, 0x01, 0x20, 0x80, 0x18, - 0x20, 0xb9, 0x43, 0x54, 0x08, 0x18, 0x24, 0x42, 0xa2, 0xe0, 0x7c, 0x82, - 0xc2, 0x05, 0xba, 0x57, 0x14, 0x02, 0x84, 0xa4, 0x18, 0xc0, 0x6c, 0xa0, - 0xa3, 0x21, 0x12, 0x42, 0x60, 0x52, 0x06, 0x24, 0x28, 0x0c, 0x16, 0x03, - 0x85, 0x19, 0xc4, 0x08, 0x88, 0x91, 0x92, 0xc2, 0x10, 0x9e, 0x1c, 0x40, - 0x00, 0x41, 0xc5, 0x25, 0xc4, 0x19, 0x18, 0xa4, 0xc4, 0x25, 0x40, 0x2c, - 0x06, 0x28, 0x97, 0x01, 0xca, 0x15, 0x82, 0xda, 0x01, 0x12, 0x02, 0xb1, - 0x25, 0x24, 0xc1, 0xe2, 0xe2, 0x52, 0x12, 0x50, 0x6d, 0x42, 0x20, 0x55, - 0x60, 0x31, 0x49, 0x88, 0x59, 0x42, 0x0c, 0x08, 0x15, 0x20, 0x39, 0x39, - 0x80, 0x00, 0x5c, 0x8d, 0x31, 0x02, 0x00, 0x20, 0x08, 0x02, 0x79, 0x43, - 0x43, 0x12, 0x43, 0xff, 0x7f, 0x66, 0x22, 0x5b, 0x4e, 0xa0, 0x27, 0x00, - 0xdc, 0x3d, 0x54, 0x47, 0xc8, 0x92, 0xf8, 0x6c, 0x05, 0x38, 0x98, 0x5e, - 0x4b, 0xfb, 0x35, 0x8f, 0x3c, 0xea, 0x12, 0x53, 0x81, 0xe6, 0x52, 0xc9, - 0xa4, 0x94, 0x25, 0xee, 0x13, 0x40, 0x40, 0x01, 0x1e, 0x20, 0xe0, 0x06, - 0x9b, 0xca, 0x0d, 0x62, 0x31, 0xa0, 0x71, 0xc5, 0x41, 0x14, 0x0f, 0x8f, - 0x10, 0x58, 0x48, 0x88, 0x07, 0x02, 0xb8, 0x81, 0x26, 0x81, 0xd8, 0x42, - 0x92, 0x52, 0x20, 0x79, 0x09, 0x06, 0x6e, 0x98, 0x04, 0x50, 0x84, 0x01, - 0xcc, 0xe3, 0x96, 0x02, 0x1b, 0x00, 0x34, 0x41, 0x0e, 0x20, 0x80, 0x80, - 0x6a, 0xb9, 0x80, 0x80, 0x1b, 0x1c, 0x3e, 0xdc, 0x20, 0x16, 0x03, 0x98, - 0x0b, 0x74, 0x21, 0x98, 0x2b, 0x28, 0x2e, 0xc8, 0xc5, 0x05, 0x57, 0x01, - 0x51, 0x02, 0x12, 0x06, 0xb1, 0x41, 0x32, 0xdc, 0xdc, 0x10, 0x4d, 0x10, - 0x55, 0xdc, 0x82, 0x92, 0x92, 0x82, 0x82, 0xe2, 0x0c, 0x60, 0x31, 0xa0, - 0x25, 0x60, 0x31, 0x06, 0x39, 0x80, 0x00, 0x02, 0x46, 0x3c, 0x0b, 0x33, - 0x10, 0x08, 0x02, 0x63, 0x5a, 0x10, 0xc4, 0x60, 0x01, 0xf3, 0x05, 0x65, - 0x21, 0x5c, 0x16, 0x88, 0x20, 0x44, 0x05, 0xc8, 0x2b, 0x10, 0x2e, 0x0b, - 0x38, 0x33, 0x8b, 0xb3, 0xc0, 0xe4, 0xb8, 0x21, 0x6c, 0x16, 0x59, 0x59, - 0x41, 0x20, 0x2d, 0x08, 0x36, 0x82, 0x45, 0x4a, 0x8a, 0x05, 0xa2, 0x56, - 0x0e, 0x20, 0x80, 0x40, 0xa9, 0x9e, 0x03, 0x04, 0x58, 0x58, 0x58, 0x20, - 0x34, 0x84, 0x0f, 0xe5, 0x0a, 0xca, 0x40, 0x38, 0x10, 0x36, 0xd0, 0x60, - 0x19, 0x08, 0x13, 0x52, 0x64, 0x08, 0x42, 0xb4, 0x80, 0x34, 0x49, 0x09, - 0x22, 0x14, 0x02, 0xdd, 0x09, 0x22, 0x81, 0x96, 0x40, 0x78, 0x72, 0x00, - 0x01, 0x04, 0xca, 0x8c, 0x82, 0x1c, 0x48, 0x80, 0x9d, 0x41, 0x1a, 0xca, - 0x12, 0x10, 0x10, 0x60, 0x97, 0x66, 0x07, 0x09, 0xc9, 0xc8, 0xb0, 0x43, - 0x8c, 0x06, 0x06, 0x22, 0x58, 0x00, 0x56, 0x30, 0xc9, 0x08, 0xb2, 0xb3, - 0x43, 0x0c, 0x62, 0x40, 0x32, 0x85, 0x9d, 0x01, 0xac, 0x48, 0x0a, 0xac, - 0x16, 0xc8, 0x93, 0x03, 0x08, 0x20, 0x70, 0x29, 0x21, 0x28, 0x00, 0x07, - 0xec, 0x82, 0x20, 0x9d, 0x30, 0x8e, 0x34, 0x03, 0x88, 0x29, 0x28, 0x25, - 0x05, 0x52, 0xc1, 0xce, 0x09, 0xb6, 0x04, 0x24, 0x80, 0x54, 0x00, 0xca, - 0x80, 0xa5, 0xc0, 0xfe, 0x62, 0x87, 0x1b, 0x01, 0x62, 0x81, 0x2c, 0x01, - 0x73, 0x19, 0xe4, 0x00, 0x02, 0xd0, 0x40, 0x06, 0x37, 0x00, 0xc0, 0x20, - 0x08, 0xfc, 0xd1, 0xb0, 0x82, 0xd2, 0xee, 0x3f, 0x66, 0xa5, 0xd6, 0x97, - 0x5c, 0x50, 0x49, 0x78, 0x21, 0x49, 0xb4, 0x0f, 0xa6, 0x22, 0x94, 0x8d, - 0xc8, 0x88, 0x92, 0x33, 0xa8, 0x0a, 0x51, 0x59, 0x98, 0xff, 0x74, 0x81, - 0x5e, 0x5e, 0xdb, 0xd8, 0x67, 0x76, 0x2d, 0x20, 0x7d, 0x3e, 0x57, 0x00, - 0x81, 0x4a, 0x4f, 0x41, 0x56, 0x04, 0x60, 0x04, 0x03, 0x24, 0x26, 0x23, - 0x94, 0x05, 0xa6, 0x04, 0x19, 0x38, 0xf9, 0xf8, 0xf8, 0x38, 0x19, 0x80, - 0x5c, 0x46, 0x46, 0x20, 0x9b, 0x53, 0x46, 0x4a, 0x06, 0x24, 0xc2, 0xc6, - 0x80, 0xd0, 0xc6, 0x8a, 0xd0, 0x0f, 0xa1, 0x18, 0xe4, 0x00, 0x02, 0x88, - 0x81, 0x81, 0x89, 0x14, 0xc0, 0xc0, 0x0b, 0x34, 0x12, 0xaa, 0x85, 0x01, - 0xc8, 0xe4, 0xe5, 0x05, 0x09, 0x00, 0x2d, 0xc1, 0xa7, 0x87, 0x01, 0x20, - 0x80, 0x18, 0x48, 0xb2, 0x85, 0x81, 0x97, 0x9f, 0x9f, 0x9f, 0x17, 0x66, - 0x09, 0x3f, 0x1c, 0xf0, 0xe2, 0x35, 0x84, 0x01, 0x20, 0x80, 0x18, 0x90, - 0x6b, 0x31, 0xc2, 0x00, 0x64, 0x89, 0x2c, 0x8c, 0xc3, 0x09, 0xb3, 0x83, - 0x93, 0x80, 0x2e, 0x80, 0x00, 0x22, 0xad, 0x46, 0x07, 0x99, 0xcb, 0xcb, - 0x80, 0xe0, 0xf1, 0x82, 0xbd, 0xc1, 0x49, 0xc8, 0x10, 0x80, 0x00, 0x22, - 0xb1, 0xd9, 0x00, 0x34, 0x17, 0xc9, 0x48, 0xa0, 0x67, 0x78, 0x81, 0x7c, - 0x82, 0x66, 0x00, 0x04, 0x10, 0xa9, 0x6d, 0x13, 0x29, 0x29, 0x29, 0x39, - 0xb4, 0x2e, 0x0d, 0x61, 0x4d, 0x00, 0x01, 0x44, 0x83, 0x06, 0x10, 0x26, - 0x00, 0x08, 0x20, 0xba, 0x58, 0x02, 0x10, 0x40, 0x74, 0xb1, 0x04, 0x20, - 0x80, 0xe8, 0x62, 0x09, 0x40, 0x00, 0xd1, 0xc5, 0x12, 0x80, 0x00, 0xa2, - 0x8b, 0x25, 0x00, 0x01, 0x44, 0x17, 0x4b, 0x00, 0x02, 0x88, 0x2e, 0x96, - 0x00, 0x04, 0x10, 0x5d, 0x2c, 0x01, 0x08, 0x20, 0xba, 0x58, 0x02, 0x10, - 0x40, 0x74, 0xb1, 0x04, 0x20, 0x80, 0xe8, 0x62, 0x09, 0x40, 0x80, 0x01, - 0x00, 0x64, 0x60, 0x82, 0xc9, 0xbd, 0x53, 0xb5, 0x4f, 0x00, 0x00, 0x00, - 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 -}; -unsigned int doxygen_png_len = 1281; - -unsigned char search_png[] = { - 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, - 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1a, - 0x08, 0x03, 0x00, 0x00, 0x01, 0x3c, 0x81, 0x58, 0x27, 0x00, 0x00, 0x02, - 0x4c, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xcc, 0x4c, 0x00, 0x01, 0x4c, - 0x01, 0x01, 0x4c, 0x00, 0x02, 0x4c, 0x01, 0x02, 0x00, 0x00, 0x00, 0x63, - 0x01, 0x02, 0x63, 0x02, 0x02, 0x63, 0x01, 0x04, 0x63, 0x02, 0x04, 0x63, - 0x04, 0x04, 0x63, 0x04, 0x07, 0x72, 0x02, 0x04, 0x72, 0x04, 0x04, 0x72, - 0x04, 0x07, 0x72, 0x07, 0x07, 0x72, 0x04, 0x09, 0x72, 0x07, 0x09, 0x7d, - 0x07, 0x09, 0x7d, 0x09, 0x09, 0x7d, 0x09, 0x0d, 0x87, 0x09, 0x0d, 0x87, - 0x09, 0x11, 0x87, 0x0d, 0x11, 0x90, 0x0d, 0x11, 0x90, 0x0d, 0x15, 0x90, - 0x11, 0x15, 0x9a, 0x11, 0x15, 0x9a, 0x11, 0x1a, 0x9a, 0x15, 0x1a, 0xa2, - 0x15, 0x1a, 0xa2, 0x15, 0x20, 0xa2, 0x1a, 0x20, 0xa9, 0x1a, 0x20, 0xa9, - 0x1a, 0x26, 0xa0, 0x20, 0x28, 0xa0, 0x24, 0x28, 0xa7, 0x2f, 0x37, 0xa7, - 0x32, 0x37, 0xb0, 0x20, 0x26, 0xb0, 0x20, 0x2d, 0xb7, 0x26, 0x2d, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x29, 0x36, 0x00, 0x00, 0x00, 0xbd, - 0x2d, 0x34, 0xb5, 0x32, 0x3c, 0xad, 0x3e, 0x45, 0x8e, 0x43, 0x3b, 0xad, - 0x41, 0x45, 0xbf, 0x43, 0x4e, 0xb3, 0x4d, 0x53, 0xb3, 0x53, 0x4f, 0xb3, - 0x50, 0x53, 0xba, 0x5e, 0x62, 0xb8, 0x71, 0x5f, 0xc3, 0x34, 0x3b, 0xc9, - 0x3b, 0x44, 0xc9, 0x3b, 0x4d, 0xc9, 0x44, 0x4d, 0xcf, 0x44, 0x56, 0xcf, - 0x4d, 0x56, 0xd5, 0x4d, 0x5f, 0xd5, 0x56, 0x5f, 0xcc, 0x54, 0x61, 0xda, - 0x56, 0x6b, 0xda, 0x5f, 0x6b, 0xdf, 0x5f, 0x6b, 0xc0, 0x6b, 0x70, 0xc0, - 0x6d, 0x70, 0x00, 0x00, 0x00, 0xc6, 0x7a, 0x7f, 0xc6, 0x7c, 0x7f, 0x00, - 0x00, 0x00, 0xd6, 0x66, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, - 0x71, 0x71, 0xe5, 0x6b, 0x75, 0x00, 0x00, 0x00, 0xe9, 0x75, 0x8c, 0x00, - 0x00, 0x00, 0xcd, 0x85, 0x72, 0xcd, 0x88, 0x8d, 0xcd, 0x8a, 0x8d, 0xd3, - 0x98, 0x9a, 0xd9, 0xa7, 0xa9, 0xdc, 0xaa, 0xa0, 0xdf, 0xb6, 0xb7, 0xee, - 0x80, 0x8c, 0xe5, 0x8b, 0x92, 0xee, 0x8c, 0x9a, 0xf2, 0x8c, 0x9a, 0xea, - 0x8c, 0xa0, 0xec, 0x99, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, - 0xae, 0xa0, 0xef, 0xae, 0xb1, 0xe6, 0xb5, 0xac, 0x00, 0x00, 0x00, 0xfc, - 0xa6, 0xc1, 0xfa, 0xaf, 0xc0, 0xf3, 0xc1, 0xb3, 0xf2, 0xd6, 0xac, 0x00, - 0x00, 0x00, 0xe6, 0xc4, 0xc6, 0xec, 0xd2, 0xd0, 0xec, 0xd3, 0xd4, 0xf6, - 0xcd, 0xc9, 0xfb, 0xc5, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xdc, 0xdc, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfa, 0xd6, 0xda, 0xf9, 0xda, 0xd5, 0xf9, 0xdf, 0xe1, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xcb, 0x00, 0x00, 0x00, 0xf2, 0xe2, 0xe2, 0xfa, - 0xe5, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xf0, 0xf1, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x11, 0x00, 0x66, - 0x22, 0x00, 0x66, 0x33, 0x00, 0x9a, 0xa5, 0x67, 0x9f, 0x00, 0x00, 0x00, - 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, - 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, - 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, - 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x04, - 0x67, 0x49, 0x46, 0x67, 0x02, 0x00, 0x00, 0x01, 0x41, 0x82, 0xfc, 0x50, - 0x00, 0x00, 0x04, 0x71, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xc5, 0x55, - 0xff, 0x6f, 0xdb, 0x44, 0x14, 0xbf, 0x94, 0xa8, 0x69, 0x52, 0x92, 0x2c, - 0x6e, 0x83, 0x93, 0xd8, 0xd7, 0x86, 0xd5, 0x84, 0x55, 0xaa, 0x46, 0x92, - 0x25, 0x76, 0x37, 0xa0, 0x94, 0x01, 0xd1, 0xa2, 0x49, 0x9d, 0xd0, 0x6a, - 0xc7, 0x5e, 0x07, 0x95, 0x58, 0xc4, 0x12, 0x99, 0xc0, 0x2f, 0x93, 0x60, - 0x9a, 0x5c, 0xc9, 0xbf, 0xdf, 0x3f, 0xd5, 0xf5, 0x1f, 0xe3, 0xbd, 0x77, - 0x67, 0xc7, 0x65, 0xab, 0xa0, 0xa0, 0x8a, 0x27, 0xd9, 0xe7, 0x3b, 0xbf, - 0x77, 0x9f, 0xcf, 0xfb, 0x72, 0xef, 0x18, 0xfb, 0xab, 0x70, 0x2e, 0x84, - 0xa0, 0x97, 0x88, 0x04, 0x87, 0x39, 0x4e, 0x85, 0xcd, 0xa5, 0x30, 0x36, - 0xcf, 0x65, 0xc4, 0x7b, 0xc7, 0xfc, 0x77, 0x2e, 0x5c, 0xd0, 0xe7, 0x0b, - 0x2e, 0x3c, 0xce, 0x6f, 0xb1, 0x56, 0x9b, 0x5b, 0xb4, 0x19, 0x0a, 0x2f, - 0x31, 0xb6, 0x92, 0xb5, 0x07, 0x83, 0xd9, 0xab, 0xaf, 0xb7, 0xdf, 0x2f, - 0x6d, 0xdd, 0x67, 0xec, 0x3e, 0xe7, 0x0e, 0x12, 0xa0, 0x87, 0x4f, 0x84, - 0x18, 0x01, 0x39, 0x9c, 0x2e, 0x38, 0xaf, 0x30, 0xd6, 0x6b, 0x98, 0x83, - 0x47, 0xe6, 0x60, 0x30, 0xd8, 0x19, 0x98, 0xf4, 0x98, 0xe6, 0xb1, 0xf9, - 0x09, 0x8e, 0x46, 0xb5, 0xc7, 0xfe, 0x4e, 0xfe, 0x38, 0xbd, 0x02, 0x7a, - 0xdb, 0xf8, 0x90, 0xb1, 0xd3, 0x2e, 0x00, 0x39, 0x29, 0xb6, 0x08, 0xc1, - 0x33, 0x1c, 0xb9, 0xe8, 0x70, 0xdd, 0x62, 0x7b, 0xc4, 0x63, 0x12, 0xc0, - 0x52, 0x60, 0x2b, 0x2d, 0xae, 0xa2, 0x67, 0xac, 0xb2, 0x4d, 0x13, 0x8c, - 0x83, 0x49, 0xb2, 0x24, 0x62, 0x11, 0xc6, 0xe0, 0x49, 0x1f, 0x95, 0xf4, - 0x0b, 0xc6, 0xb4, 0x26, 0x30, 0x45, 0xe6, 0x03, 0x7c, 0xef, 0x00, 0xf7, - 0xe3, 0xae, 0x89, 0x4e, 0x98, 0x8d, 0x02, 0x72, 0xeb, 0xad, 0x7c, 0x90, - 0x7b, 0xaf, 0x5c, 0x48, 0xee, 0xf3, 0x59, 0xf8, 0xe2, 0xe7, 0x67, 0xcf, - 0xff, 0xb9, 0x7c, 0x7f, 0xf0, 0xa9, 0xa1, 0xf9, 0x64, 0xfa, 0x7a, 0xd6, - 0x6d, 0x63, 0x36, 0x17, 0x42, 0xc4, 0x1c, 0x83, 0x2a, 0x90, 0x18, 0x1f, - 0x23, 0x75, 0x39, 0x8d, 0xe0, 0xc3, 0x95, 0xab, 0xb8, 0x38, 0xc1, 0x70, - 0xb7, 0x36, 0xd6, 0xde, 0x30, 0x76, 0x78, 0x42, 0xa6, 0x81, 0x88, 0x1d, - 0xf8, 0x69, 0x91, 0x89, 0xf4, 0x51, 0xba, 0x4a, 0x4f, 0x2c, 0x26, 0x9c, - 0x87, 0x23, 0x9e, 0x6e, 0xc0, 0x79, 0xb3, 0xba, 0xca, 0x58, 0xeb, 0x63, - 0x55, 0x47, 0x63, 0x19, 0x54, 0x1b, 0x84, 0xf7, 0x61, 0xa4, 0xc0, 0x60, - 0x7c, 0x47, 0x00, 0x0b, 0x9c, 0x46, 0x9c, 0x7b, 0x22, 0x72, 0x61, 0xa1, - 0x83, 0xea, 0xad, 0x4a, 0x9e, 0xb1, 0xa1, 0xd6, 0x30, 0x39, 0x8f, 0x04, - 0x25, 0x3f, 0x20, 0xd2, 0xa3, 0x58, 0x8c, 0x11, 0xc0, 0x46, 0x82, 0xa0, - 0xcc, 0x3b, 0xb2, 0xce, 0x96, 0xa4, 0x21, 0x17, 0xd5, 0xdc, 0x53, 0x0a, - 0xe8, 0x79, 0xa5, 0x5a, 0xbb, 0x9e, 0xac, 0x17, 0x0b, 0x6f, 0xd9, 0x7f, - 0x97, 0x59, 0x18, 0x9e, 0xfe, 0x70, 0x9d, 0x54, 0x3d, 0xb9, 0xdb, 0xd6, - 0x1c, 0x69, 0x3b, 0x3d, 0x0b, 0x8f, 0xba, 0xdb, 0xd7, 0x93, 0xad, 0xa6, - 0x36, 0x24, 0xdc, 0xb3, 0x23, 0x0b, 0x23, 0x30, 0x82, 0x90, 0x78, 0x5c, - 0x9d, 0x42, 0x4a, 0x52, 0xa8, 0x32, 0x86, 0xd1, 0xb3, 0x22, 0x4a, 0x77, - 0x24, 0x55, 0x38, 0x37, 0xeb, 0x88, 0xfd, 0xd3, 0x6f, 0x3f, 0x52, 0x9e, - 0x43, 0x31, 0xf1, 0x60, 0xd5, 0x21, 0x6d, 0x8f, 0x4a, 0x46, 0xd0, 0x91, - 0x0c, 0xf1, 0x63, 0xa4, 0x36, 0x51, 0x6b, 0x18, 0x6d, 0xad, 0xcc, 0xd8, - 0xfe, 0xf3, 0x7b, 0xaa, 0x28, 0x3c, 0xab, 0x83, 0xc3, 0x98, 0xa6, 0x36, - 0x26, 0x98, 0x43, 0x71, 0x78, 0x98, 0x64, 0x2a, 0x1d, 0xcf, 0xeb, 0xf7, - 0xe5, 0x1a, 0xa9, 0x6c, 0x94, 0x7d, 0xd6, 0x7a, 0x70, 0x3b, 0xad, 0x28, - 0xd5, 0x88, 0xb0, 0x9a, 0xe4, 0x21, 0x4c, 0x9c, 0x88, 0x84, 0x4b, 0x4a, - 0x51, 0xea, 0x14, 0xe7, 0x75, 0x30, 0xde, 0x6c, 0x6f, 0xc1, 0x17, 0x30, - 0xef, 0x40, 0x81, 0xd8, 0x23, 0xaa, 0x30, 0xdc, 0xdd, 0xb1, 0xa5, 0x13, - 0x21, 0x16, 0x17, 0xe9, 0x3b, 0x38, 0xba, 0x6e, 0xa0, 0x8c, 0x37, 0xd6, - 0x7d, 0x36, 0xd4, 0xa1, 0xbe, 0xf8, 0x40, 0xd5, 0x0f, 0xd6, 0x22, 0xc7, - 0x32, 0x94, 0x08, 0x31, 0xb9, 0x69, 0x53, 0x49, 0xab, 0xfd, 0x12, 0xd6, - 0x46, 0x25, 0x3f, 0x67, 0xf3, 0x5a, 0x1d, 0xac, 0xbb, 0xea, 0x2c, 0x49, - 0x23, 0x72, 0xd1, 0x4e, 0x99, 0xbb, 0x60, 0x40, 0x51, 0x8c, 0x91, 0xbd, - 0x02, 0xd6, 0x8b, 0xd8, 0xa7, 0xfc, 0x5a, 0xbd, 0x61, 0x98, 0xe6, 0xa3, - 0x63, 0xe8, 0x06, 0x3b, 0xd8, 0x14, 0x06, 0x5d, 0x68, 0x0a, 0xf4, 0xbd, - 0x23, 0x3b, 0x44, 0x17, 0x5e, 0xc7, 0xdf, 0x99, 0xf8, 0x49, 0xcb, 0xf0, - 0x65, 0x7c, 0x54, 0x92, 0x1d, 0xd8, 0xbf, 0x28, 0x5f, 0xb7, 0xb4, 0xab, - 0xa5, 0xc2, 0xca, 0xbe, 0xaa, 0x4f, 0xbf, 0xb6, 0xb2, 0x92, 0xbb, 0x8e, - 0xe4, 0x73, 0xbd, 0x79, 0xb6, 0xc0, 0xe7, 0xb3, 0xe9, 0xf4, 0xf4, 0xf4, - 0xdb, 0x87, 0x87, 0x37, 0x24, 0x07, 0x9f, 0xdf, 0xbd, 0x63, 0x6a, 0xda, - 0xbe, 0x7f, 0x09, 0x75, 0x36, 0xfd, 0x25, 0x3a, 0x7b, 0xfd, 0xeb, 0x8b, - 0x67, 0x0f, 0xbf, 0x3a, 0xb8, 0x21, 0xf9, 0xf2, 0x8b, 0xfb, 0xbb, 0xb7, - 0xb7, 0x8c, 0x96, 0x56, 0x19, 0xfa, 0xec, 0x4d, 0x02, 0xfb, 0xea, 0x2c, - 0x3c, 0x79, 0x7c, 0x6f, 0x6f, 0xa7, 0xad, 0x9a, 0x99, 0x45, 0x6d, 0xec, - 0x5f, 0x4a, 0x07, 0x6c, 0x3b, 0x57, 0xfc, 0x33, 0x5b, 0x8d, 0xba, 0xa6, - 0x0d, 0xa7, 0x14, 0xe3, 0xe9, 0x0c, 0x5a, 0xc1, 0x67, 0x09, 0x26, 0xb7, - 0x16, 0xc9, 0xad, 0x4a, 0x75, 0x1a, 0xa7, 0x33, 0xea, 0xdd, 0x9c, 0xf7, - 0x63, 0xd9, 0x28, 0x49, 0x32, 0x7f, 0xe9, 0x2a, 0x77, 0xd2, 0x85, 0x18, - 0xb0, 0xfb, 0xaa, 0xff, 0x4b, 0x3d, 0x79, 0x56, 0xcd, 0xe6, 0xa6, 0x56, - 0x5e, 0x3b, 0x02, 0xe0, 0x93, 0x93, 0x97, 0x2f, 0x1f, 0xdf, 0x49, 0x39, - 0x8d, 0xd4, 0xae, 0x78, 0xfe, 0x5d, 0x79, 0x5b, 0x2c, 0xb2, 0x9c, 0x3d, - 0x91, 0x39, 0x92, 0x13, 0x45, 0x87, 0xda, 0x87, 0x23, 0x87, 0xa0, 0x2f, - 0xb9, 0x4d, 0xe4, 0xe9, 0xf5, 0x12, 0xbd, 0x64, 0x17, 0x53, 0xd7, 0xaa, - 0xe5, 0x35, 0xc8, 0x74, 0xff, 0xc1, 0x37, 0x87, 0x7b, 0xcb, 0x8d, 0x03, - 0xb5, 0x71, 0x60, 0x27, 0x34, 0xc4, 0x22, 0x44, 0x09, 0x28, 0x1c, 0xb0, - 0x65, 0x64, 0x25, 0xc0, 0x04, 0x34, 0xb6, 0x1d, 0x4f, 0xe2, 0xe2, 0x4d, - 0x16, 0x5b, 0xef, 0x72, 0x94, 0x92, 0x46, 0xdf, 0xd8, 0xac, 0x94, 0x57, - 0xe1, 0x86, 0xd4, 0xdb, 0xbb, 0xbb, 0xed, 0x8c, 0x4b, 0x76, 0xb8, 0x54, - 0xb5, 0x32, 0x86, 0x8e, 0xba, 0xc8, 0xbc, 0xf4, 0xfa, 0x5b, 0x06, 0x3a, - 0x9a, 0x74, 0xe8, 0xe8, 0xab, 0xc0, 0x4a, 0xe9, 0x5f, 0xc2, 0x1d, 0xa7, - 0xeb, 0x46, 0xbd, 0xb2, 0x8e, 0xc0, 0x35, 0xbd, 0xb5, 0xac, 0x0b, 0xe8, - 0x4d, 0x61, 0x3f, 0x21, 0x6b, 0x91, 0xfb, 0xc1, 0x72, 0xab, 0xc5, 0xe5, - 0x8c, 0xca, 0x00, 0xd2, 0xed, 0x17, 0xab, 0xe4, 0x84, 0xb2, 0xe5, 0x8a, - 0xd8, 0xbd, 0x22, 0xd0, 0x98, 0x64, 0xad, 0x94, 0xcf, 0xfb, 0xd8, 0x01, - 0x36, 0xf5, 0xa6, 0x89, 0xdd, 0x8f, 0xb7, 0x89, 0xf4, 0x62, 0xe4, 0x20, - 0x60, 0x64, 0xa9, 0x16, 0xaf, 0x42, 0x2f, 0x3d, 0xca, 0x00, 0x3b, 0x2a, - 0x80, 0xa1, 0xaa, 0x43, 0x97, 0xd6, 0xc3, 0x58, 0x35, 0xed, 0x24, 0xff, - 0xa9, 0x9e, 0xc2, 0x35, 0xea, 0xe5, 0x62, 0x7e, 0x1f, 0x4f, 0xb3, 0xdf, - 0xab, 0x69, 0xd4, 0xfa, 0xa0, 0xa9, 0xf5, 0x55, 0xf4, 0x62, 0xd7, 0xe2, - 0x97, 0x02, 0x2d, 0xac, 0x20, 0x71, 0x48, 0x32, 0xb0, 0xd3, 0x4a, 0xa5, - 0x69, 0x98, 0x29, 0xe9, 0x85, 0x9d, 0x85, 0xb3, 0xb2, 0x81, 0x36, 0x0d, - 0xbd, 0x56, 0x2a, 0xe4, 0x86, 0xea, 0x20, 0x03, 0x74, 0x45, 0xd3, 0xea, - 0x75, 0x5d, 0x6f, 0xde, 0xa4, 0x34, 0xf4, 0x7a, 0xb5, 0x02, 0xdd, 0xf6, - 0xfc, 0x69, 0xa6, 0x61, 0xfa, 0xbd, 0x8b, 0xf3, 0x42, 0xb1, 0x50, 0x2c, - 0xdd, 0xa4, 0x14, 0x0b, 0xab, 0xf9, 0xb7, 0x43, 0x97, 0xfd, 0xaf, 0xf2, - 0x27, 0x51, 0x22, 0xbd, 0xc0, 0xca, 0xc6, 0x8b, 0x9d, 0x00, 0x00, 0x00, - 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 -}; -unsigned int search_png_len = 1857; -#endif - - // Stripped version of FreeSans.ttf part of FreeFonts package, // see http://www.nongnu.org/freefont for more info unsigned char FreeSans_ttf[] = { diff --git a/src/memberdef.cpp b/src/memberdef.cpp index f221dd6..098c58e 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -2933,10 +2933,9 @@ void MemberDef::writeEnumDeclaration(OutputList &typeDecl, typeDecl.writeChar(' '); } - if (numVisibleEnumValues>0) + uint enumValuesPerLine = (uint)Config_getInt("ENUM_VALUES_PER_LINE"); + if (numVisibleEnumValues>0 && enumValuesPerLine>0) { - uint enumValuesPerLine = (uint)Config_getInt("ENUM_VALUES_PER_LINE"); - if (enumValuesPerLine==0) enumValuesPerLine=1; typeDecl.docify("{ "); if (fmdl) { diff --git a/src/membergroup.cpp b/src/membergroup.cpp index 6b40e5c..d44a481 100644 --- a/src/membergroup.cpp +++ b/src/membergroup.cpp @@ -264,7 +264,9 @@ QCString MemberGroup::anchor() const { uchar md5_sig[16]; QCString sigStr(33); - MD5Buffer((const unsigned char *)grpHeader.data(),grpHeader.length(),md5_sig); + QCString locHeader = grpHeader; + if (locHeader.isEmpty()) locHeader="[NOHEADER]"; + MD5Buffer((const unsigned char *)locHeader.data(),locHeader.length(),md5_sig); MD5SigToString(md5_sig,sigStr.data(),33); return "amgrp"+sigStr; } diff --git a/src/memberlist.cpp b/src/memberlist.cpp index cf0235e..fddb0b4 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -409,12 +409,12 @@ void MemberList::writeDeclarations(OutputList &ol, if (numDecMembers()==0) return; //printf("%p: MemberList::writeDeclaration(title=`%s',subtitle=`%s')=%d\n", // this,title,subtitle,numDecMembers()); + ol.startMemberHeader(listTypeAsString()); if (title) { - ol.startMemberHeader(listTypeAsString()); ol.parseText(title); - ol.endMemberHeader(); } + ol.endMemberHeader(); if (subtitle) { QCString st=subtitle; @@ -449,8 +449,8 @@ void MemberList::writeDeclarations(OutputList &ol, MemberGroup *mg; while ((mg=mgli.current())) { - //printf("mg->header=%s\n",mg->header().data()); - bool hasHeader=mg->header()!="[NOHEADER]"; + bool hasHeader=!mg->header().isEmpty() && mg->header()!="[NOHEADER]"; + //printf("mg->header=%s hasHeader=%d\n",mg->header().data(),hasHeader); ol.startMemberGroupHeader(hasHeader); if (hasHeader) { diff --git a/src/pagedef.cpp b/src/pagedef.cpp index 02d6006..e7bcc1a 100644 --- a/src/pagedef.cpp +++ b/src/pagedef.cpp @@ -73,6 +73,8 @@ void PageDef::writeDocumentation(OutputList &ol) QCString pageName; pageName=escapeCharsInString(name(),FALSE,TRUE); + //printf("PageDef::writeDocumentation: %s\n",getOutputFileBase().data()); + startFile(ol,getOutputFileBase(),pageName,title(),HLI_Pages,TRUE); ol.pushGeneratorState(); diff --git a/src/pre.l b/src/pre.l index 60446df..db5bf28 100644 --- a/src/pre.l +++ b/src/pre.l @@ -129,6 +129,11 @@ static void setFileName(const char *name) QFileInfo fi(name); g_yyFileName=convertToQCString(fi.absFilePath()); g_yyFileDef=findFileDef(Doxygen::inputNameDict,g_yyFileName,ambig); + if (g_yyFileDef==0) // if this is not an input file check if it is an + // include file + { + g_yyFileDef=findFileDef(Doxygen::includeNameDict,g_yyFileName,ambig); + } //printf("setFileName(%s) g_yyFileName=%s g_yyFileDef=%p\n", // name,g_yyFileName.data(),g_yyFileDef); if (g_yyFileDef && g_yyFileDef->isReference()) g_yyFileDef=0; @@ -313,11 +318,13 @@ static FileState *findFile(const char *fileName,bool localInclude,bool &alreadyI while (s) { QCString absName = (QCString)s+"/"+fileName; + //printf(" Looking for %s in %s\n",fileName,s); FileState *fs = checkAndOpenFile(absName,alreadyIncluded); if (fs) { setFileName(absName); g_yyLineNr=1; + //printf(" -> found it\n"); return fs; } else if (alreadyIncluded) @@ -1252,7 +1259,7 @@ static void readIncludeFile(const QCString &inc) if (Debug::isFlagSet(Debug::Preprocessor)) { for (i=0;igetPath()+"/"+incFileName); //printf("%s + %s -> resolved path %s\n",oldFileDef->getPath().data(),incFileName.data(),absPath.data()); - incFileName = absPath; } FileDef *fd = findFileDef(Doxygen::inputNameDict,incFileName,ambig); //printf("%s::findFileDef(%s)=%p\n",oldFileDef->name().data(),incFileName.data(),fd); diff --git a/src/scanner.l b/src/scanner.l index 3685157..3e7c6ca 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -5191,7 +5191,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) /* ---- Single line comments ------ */ [^\n]*"\n"[ \t]*"//"[/!] { // continuation of multiline C++-style comment docBlock+=yytext; - docBlock.resize(docBlock.size() - 3); + docBlock.resize(docBlock.length() - 3); yyLineNr++; } [^\n]*/"\n" { // whole line @@ -5487,7 +5487,13 @@ static void handleCommentBlock(const QCString &doc,bool brief) ) { //printf("parseCommentBlock position=%d [%s]\n",position,doc.data()+position); - if (needsEntry) newEntry(); + if (needsEntry) + { + QCString docFile = current->docFile; + newEntry(); + current->docFile = docFile; + current->docLine = lineNr; + } } if (needsEntry) { diff --git a/src/translator_es.h b/src/translator_es.h index 077314a..a25a608 100644 --- a/src/translator_es.h +++ b/src/translator_es.h @@ -1,4 +1,4 @@ -/****************************************************************************** +/****************************************************************************** * * * diff --git a/src/translator_kr.h b/src/translator_kr.h index 8cb691a..419ef9d 100644 --- a/src/translator_kr.h +++ b/src/translator_kr.h @@ -1828,6 +1828,62 @@ class TranslatorKorean : public TranslatorAdapter_1_6_3 return "ġϴ° "; } +////////////////////////////////////////////////////////////////////////// +// new since 1.6.3 (missing items for the directory pages) +////////////////////////////////////////////////////////////////////////// + + /*! introduction text for the directory dependency graph */ + virtual QCString trDirDependency(const char *name) + { + return QCString(name) + " 丮 ׷"; + } + + /*! when clicking a directory dependency label, a page with a + * table is shown. The heading for the first column mentions the + * source file that has a relation to another file. + */ + virtual QCString trFileIn(const char *name) + { + return QCString(name) + " "; + } + + /*! when clicking a directory dependency label, a page with a + * table is shown. The heading for the second column mentions the + * destination file that is included. + */ + virtual QCString trIncludesFileIn(const char *name) + { + return QCString(name) + " "; + } + + /** Compiles a date string. + * @param year Year in 4 digits + * @param month Month of the year: 1=January + * @param day Day of the Month: 1..31 + * @param dayOfWeek Day of the week: 1=Monday..7=Sunday + * @param hour Hour of the day: 0..23 + * @param minutes Minutes in the hour: 0..59 + * @param seconds Seconds within the minute: 0..59 + * @param includeTime Include time in the result string? + */ + virtual QCString trDateTime(int year,int month,int day,int dayOfWeek, + int hour,int minutes,int seconds, + bool includeTime) + { + static const char *days[] = { "","ȭ","","","","","" }; + static const char *months[] = { "1","2","3","4","5","6","7","8","9","10","11","12" }; + QCString sdate; + sdate.sprintf("%s %s %d %d",days[dayOfWeek-1],months[month-1],day,year); + if (includeTime) + { + QCString stime; + stime.sprintf(" %.2d:%.2d:%.2d",hour,minutes,seconds); + sdate+=stime; + } + return sdate; + } + + }; #endif diff --git a/src/util.cpp b/src/util.cpp index f3ea0df..d31781b 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1937,6 +1937,7 @@ void writeExample(OutputList &ol,ExampleSDict *ed) ol.disable(OutputGenerator::Latex); ol.disable(OutputGenerator::RTF); // link for Html / man + //printf("writeObjectLink(file=%s)\n",e->file.data()); ol.writeObjectLink(0,e->file,e->anchor,e->name); ol.popGeneratorState(); @@ -4140,7 +4141,7 @@ static bool getScopeDefs(const char *docScope,const char *scope, static bool isLowerCase(QCString &s) { - char *p=s.data(); + uchar *p=(uchar*)s.data(); if (p==0) return TRUE; int c; while ((c=*p++)) if (!islower(c)) return FALSE; @@ -6451,7 +6452,8 @@ bool updateLanguageMapping(const QCString &extension,const QCString &language) { g_extLookup.remove(extension); } - g_extLookup.insert(extension,new int(parserId)); + //printf("registering extension %s\n",extName.data()); + g_extLookup.insert(extName,new int(parserId)); if (!Doxygen::parserManager->registerExtension(extName,p->parserName)) { err("Failed to assign extension %s to parser %s for language %s\n", @@ -6503,10 +6505,12 @@ SrcLangExt getLanguageFromFileName(const QCString fileName) int *pVal=g_extLookup.find(extStr); if (pVal) // listed extension { + //printf("getLanguageFromFileName(%s)=%x\n",extStr.data(),*pVal); return (SrcLangExt)*pVal; } } } + //printf("getLanguageFromFileName(%s) not found!\n",fileName.data()); return SrcLangExt_Cpp; // not listed => assume C-ish language. } -- cgit v0.12