From eb1cb68e11a3b24222a49ed254f8f7aea2f73bae Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Wed, 24 Mar 2010 20:39:59 +0000 Subject: Release-1.6.3-20100324 --- INSTALL | 4 +- LANGUAGE.HOWTO | 9 +- README | 4 +- configure | 2 +- doc/install.doc | 6 +- qtools/Doxyfile | 2 +- qtools/qdatetime.cpp | 2 +- src/classdef.cpp | 42 +- src/classdef.h | 1 + src/classlist.cpp | 37 +- src/classlist.h | 1 + src/code.h | 2 +- src/code.l | 4 +- src/commentscan.l | 16 +- src/config.l | 29 ++ src/config.xml | 117 +++-- src/configoptions.cpp | 122 +++-- src/dbusxmlscanner.cpp | 3 +- src/dbusxmlscanner.h | 3 +- src/definition.cpp | 63 ++- src/definition.h | 1 + src/dirdef.cpp | 7 +- src/doctokenizer.l | 2 +- src/dot.cpp | 16 +- src/doxygen.cpp | 22 +- src/doxygen.css | 177 +++++-- src/doxygen_css.h | 177 +++++-- src/filedef.cpp | 47 +- src/filedef.h | 1 + src/fortrancode.h | 2 +- src/fortrancode.l | 2 +- src/fortranscanner.h | 3 +- src/fortranscanner.l | 70 ++- src/ftvhelp.cpp | 43 +- src/groupdef.cpp | 51 +- src/groupdef.h | 1 + src/htmlgen.cpp | 1264 +++++++++++++++++++++++++++-------------------- src/htmlgen.h | 10 +- src/htmlhelp.cpp | 6 + src/image.cpp | 116 +++++ src/image.h | 17 + src/index.cpp | 68 ++- src/index.h | 3 +- src/language.cpp | 4 +- src/latexdocvisitor.cpp | 17 +- src/latexgen.cpp | 2 +- src/latexgen.h | 4 +- src/logos.cpp | 5 +- src/mangen.cpp | 8 +- src/mangen.h | 4 +- src/memberdef.cpp | 4 +- src/memberlist.cpp | 121 ++++- src/memberlist.h | 2 + src/namespacedef.cpp | 55 ++- src/namespacedef.h | 2 + src/outputgen.h | 4 +- src/outputlist.h | 8 +- src/pagedef.cpp | 8 +- src/parserintf.h | 5 +- src/pre.l | 139 +----- src/pycode.h | 2 +- src/pycode.l | 2 +- src/pyscanner.h | 3 +- src/pyscanner.l | 6 +- src/rtfgen.h | 4 +- src/scanner.h | 3 +- src/scanner.l | 8 +- src/search.css | 164 +++--- src/search.js | 4 +- src/search_css.h | 164 +++--- src/search_js.h | 4 +- src/translator_ca.h | 36 +- src/translator_de.h | 214 ++++---- src/translator_eo.h | 36 +- src/translator_es.h | 117 +++-- src/translator_hr.h | 309 ++++++------ src/util.cpp | 69 +-- src/util.h | 3 + src/vhdlcode.h | 2 +- src/vhdlcode.l | 2 +- src/vhdldocgen.cpp | 2 +- src/vhdlscanner.h | 3 +- src/vhdlscanner.l | 7 +- 83 files changed, 2663 insertions(+), 1468 deletions(-) diff --git a/INSTALL b/INSTALL index 88814de..24b8bb3 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.6.3 +DOXYGEN Version 1.6.3-20100324 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (21 February 2010) +Dimitri van Heesch (24 March 2010) diff --git a/LANGUAGE.HOWTO b/LANGUAGE.HOWTO index 306b4bf..e535a05 100644 --- a/LANGUAGE.HOWTO +++ b/LANGUAGE.HOWTO @@ -2,12 +2,12 @@ This short howto explains how to add support for a new language to Doxygen: Just follow these steps: -1) Tell me for which language you want to add support. If no one else +1) Tell me which language you want to add support for. If no one else is already working on support for that language, you will be assigned as the maintainer for the language. I'll create a list on Doxygen's homepage, so everyone knows who is doing what. 2) Create a copy of translator_en.h and name it - translator_.h + translator_.h I'll use xx in the rest of this document. 3) Edit language.cpp: - Add a #include @@ -21,8 +21,9 @@ Just follow these steps: after the if { ... } 4) Edit libdoxygen.pro.in and add translator_xx.h to the HEADERS line. 5) Edit translator_xx.h: - - Rename TRANSLATOR_EN_H to TRANSLATOR_XX_H twice. - - Rename TranslatorEnglish to TranslatorYourLanguage + - Change TRANSLATOR_EN_H to TRANSLATOR_XX_H (in both the #include line and + the #define line). + - Change TranslatorEnglish to TranslatorYourLanguage - In the member idLanguage() change "english" into the name of your language (use lower case characters only). Depending on the language you may also wish to change the member functions latexLanguageSupportCommand() diff --git a/README b/README index 038e604..50f1dea 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.6.3 +DOXYGEN Version 1.6.3_20100324 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) (21 February 2010) +Dimitri van Heesch (dimitri@stack.nl) (24 March 2010) diff --git a/configure b/configure index 542023f..b9b63dc 100755 --- a/configure +++ b/configure @@ -20,7 +20,7 @@ doxygen_version_minor=6 doxygen_version_revision=3 #NOTE: Setting version_mmn to "NO" will omit mmn info from the package. -doxygen_version_mmn=NO +doxygen_version_mmn=20100324 bin_dirs=`echo $PATH | sed -e "s/:/ /g"` diff --git a/doc/install.doc b/doc/install.doc index 60885d1..e1a6a29 100644 --- a/doc/install.doc +++ b/doc/install.doc @@ -59,7 +59,7 @@ tools should be installed. Qt \latexonly(see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly \addindex Qt - version 3.3 or higher. + version 4.3 or higher. This is needed to build the GUI front-end doxywizard.
  • A \f$\mbox{\LaTeX}\f$ distribution: for instance teTeX 1.0 @@ -110,7 +110,7 @@ Compilation is now done by performing the following steps: See the PLATFORMS file for a list of possible platform options. - If you have Qt-3.3.x installed and want to build the GUI + If you have Qt-4.3 or higher installed and want to build the GUI front-end, you should run the configure script with the --with-doxywizard option: @@ -409,7 +409,7 @@ containing a \c Doxygen.sln file. Open this file in Visual Studio. You can now build the Release or Debug flavor of Doxygen and Doxytag by right-clicking the project in the solutions explorer, and selecting Build. -Note that compiling Doxywizard currently requires Qt version 3 +Note that compiling Doxywizard currently requires Qt version 4 (see http://www.trolltech.com/products/qt/qt3). If you do not have a commercial license, you can build Doxywizard with the open source version (see http://qtwin.sourceforge.net/qt3-win32/compile-msvc-2005.php), diff --git a/qtools/Doxyfile b/qtools/Doxyfile index 5311996..1727cf9 100644 --- a/qtools/Doxyfile +++ b/qtools/Doxyfile @@ -7,7 +7,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = Qtools PROJECT_NUMBER = OUTPUT_DIRECTORY = ../qtools_docs -CREATE_SUBDIRS = YES +CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES diff --git a/qtools/qdatetime.cpp b/qtools/qdatetime.cpp index cecb855..4edaca9 100644 --- a/qtools/qdatetime.cpp +++ b/qtools/qdatetime.cpp @@ -491,7 +491,7 @@ bool QDate::isValid( int y, int m, int d ) bool QDate::leapYear( int y ) { - return y % 4 == 0 && y % 100 != 0 || y % 400 == 0; + return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0); } /*! diff --git a/src/classdef.cpp b/src/classdef.cpp index 5ecb140..2542774 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -1360,6 +1360,42 @@ void ClassDef::writeAuthorSection(OutputList &ol) ol.popGeneratorState(); } + +void ClassDef::writeSummaryLinks(OutputList &ol) +{ + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + QListIterator eli( + LayoutDocManager::instance().docEntries(LayoutDocManager::Class)); + LayoutDocEntry *lde; + bool first=TRUE; + for (eli.toFirst();(lde=eli.current());++eli) + { + if (lde->kind()==LayoutDocEntry::ClassNestedClasses && + m_impl->innerClasses && + m_impl->innerClasses->declVisible() + ) + { + LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde; + writeSummaryLink(ol,"nested-classes",ls->title,first); + } + else if (lde->kind()== LayoutDocEntry::MemberDecl) + { + LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde; + MemberList * ml = getMemberList(lmd->type); + if (ml && ml->declVisible()) + { + writeSummaryLink(ol,ml->listTypeAsString(),lmd->title,first); + } + } + } + if (!first) + { + ol.writeString(" \n"); + } + ol.popGeneratorState(); +} + // write all documentation for this class void ClassDef::writeDocumentation(OutputList &ol) { @@ -1394,11 +1430,12 @@ void ClassDef::writeDocumentation(OutputList &ol) writeNavigationPath(ol); } ol.endQuickIndices(); - ol.startContents(); - startTitle(ol,getOutputFileBase()); + + startTitle(ol,getOutputFileBase(),this); ol.parseText(pageTitle); addGroupListToTitle(ol,this); endTitle(ol,getOutputFileBase(),name()); + ol.startContents(); { ol.pushGeneratorState(); @@ -1669,6 +1706,7 @@ void ClassDef::writeMemberList(OutputList &ol) startTitle(ol,0); ol.parseText(displayName()+" "+theTranslator->trMemberList()); endTitle(ol,0,0); + ol.startContents(); ol.parseText(theTranslator->trThisIsTheListOfAllMembers()); ol.writeObjectLink(getReference(),getOutputFileBase(),0,displayName()); ol.parseText(theTranslator->trIncludingInheritedMembers()); diff --git a/src/classdef.h b/src/classdef.h index 81f91ee..693e299 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -311,6 +311,7 @@ class ClassDef : public Definition void writeMemberList(OutputList &ol); void writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup); void writeQuickMemberLinks(OutputList &ol,MemberDef *md) const; + void writeSummaryLinks(OutputList &ol); void reclassifyMember(MemberDef *md,MemberDef::MemberType t); bool visited; diff --git a/src/classlist.cpp b/src/classlist.cpp index b4775b7..196f8c2 100644 --- a/src/classlist.cpp +++ b/src/classlist.cpp @@ -64,11 +64,42 @@ ClassListIterator::ClassListIterator(const ClassList &cllist) : { } +bool ClassSDict::declVisible(const ClassDef::CompoundType *filter) const +{ + static bool hideUndocClasses = Config_getBool("HIDE_UNDOC_CLASSES"); + static bool extractLocalClasses = Config_getBool("EXTRACT_LOCAL_CLASSES"); + if (count()>0) + { + ClassSDict::Iterator sdi(*this); + ClassDef *cd=0; + for (sdi.toFirst();(cd=sdi.current());++sdi) + { + if (cd->name().find('@')==-1 && + (filter==0 || *filter==cd->compoundType()) + ) + { + bool isLink = cd->isLinkable(); + if (isLink || + (!hideUndocClasses && + (!cd->isLocal() || extractLocalClasses) + ) + ) + { + return TRUE; + } + } + } + } + return FALSE; +} + void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *filter, const char *header,bool localNames) { static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN"); static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL"); + static bool hideUndocClasses = Config_getBool("HIDE_UNDOC_CLASSES"); + static bool extractLocalClasses = Config_getBool("EXTRACT_LOCAL_CLASSES"); if (count()>0) { ClassSDict::Iterator sdi(*this); @@ -82,14 +113,14 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f { bool isLink = cd->isLinkable(); if (isLink || - (!Config_getBool("HIDE_UNDOC_CLASSES") && - (!cd->isLocal() || Config_getBool("EXTRACT_LOCAL_CLASSES")) + (!hideUndocClasses && + (!cd->isLocal() || extractLocalClasses) ) ) { if (!found) { - ol.startMemberHeader(); + ol.startMemberHeader("nested-classes"); if (header) { ol.parseText(header); diff --git a/src/classlist.h b/src/classlist.h index 8da9d5d..431932d 100644 --- a/src/classlist.h +++ b/src/classlist.h @@ -54,6 +54,7 @@ class ClassSDict : public SDict int compareItems(GCI item1,GCI item2); void writeDeclaration(OutputList &ol,const ClassDef::CompoundType *filter=0, const char *header=0,bool localNames=FALSE); + bool declVisible(const ClassDef::CompoundType *filter=0) const; }; #endif diff --git a/src/code.h b/src/code.h index b020be5..99c5d01 100644 --- a/src/code.h +++ b/src/code.h @@ -28,7 +28,7 @@ class MemberDef; void parseCCode(CodeOutputInterface &,const char *,const QCString &, bool ,const char *,FileDef *fd=0, int startLine=-1,int endLine=-1,bool inlineFragment=FALSE, - MemberDef *memberDef=0); + MemberDef *memberDef=0,bool showLineNumbers=TRUE); void resetCCodeParserState(); void codeFreeScanner(); diff --git a/src/code.l b/src/code.l index 2ad58de..99bb0f2 100644 --- a/src/code.l +++ b/src/code.l @@ -3343,7 +3343,7 @@ void resetCCodeParserState() void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s, bool exBlock, const char *exName,FileDef *fd, int startLine,int endLine,bool inlineFragment, - MemberDef *memberDef) + MemberDef *memberDef,bool showLineNumbers) { //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd); if (s.isEmpty()) return; @@ -3378,7 +3378,7 @@ void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s, g_exampleBlock = exBlock; g_exampleName = exName; g_sourceFileDef = fd; - g_lineNumbers = fd!=0; + g_lineNumbers = fd!=0 && showLineNumbers; if (exBlock && fd==0) { // create a dummy filedef for the example diff --git a/src/commentscan.l b/src/commentscan.l index 5306075..902a4f4 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -1031,13 +1031,25 @@ RCSTAG "$"{ID}":"[^\n$]+"$" ".," { // . with comma such as "e.g.," addOutput(yytext); } +"...\\"[ \t] { // ellipsis with escaped space. + addOutput("... "); + } +".."[\.]?/[^ \t\n] { // internal ellipsis + addOutput(yytext); + } (\n|\\_linebr)({B}*(\n|\\_linebr))+ { // at least one blank line (or blank line command) - if (inContext!=OutputBrief) + if (inContext==OutputXRef) + { + // see bug 613024, we need to put the newlines after ending the XRef section. + setOutput(OutputDoc); + addOutput("\n\n"); + } + else if (inContext!=OutputBrief) { addOutput("\n\n"); setOutput(OutputDoc); } - else + else // inContext==OutputBrief { // only go to the detailed description if we have // found some brief description and not just whitespace endBrief(FALSE); diff --git a/src/config.l b/src/config.l index b8031a0..da34aeb 100644 --- a/src/config.l +++ b/src/config.l @@ -1387,6 +1387,35 @@ void Config::check() depth=1000; } + int &hue = Config_getInt("HTML_COLORSTYLE_HUE"); + if (hue<0) + { + hue=0; + } + else if (hue>=360) + { + hue=hue%360; + } + + int &sat = Config_getInt("HTML_COLORSTYLE_SAT"); + if (sat<0) + { + sat=0; + } + else if (sat>255) + { + sat=255; + } + int &gamma = Config_getInt("HTML_COLORSTYLE_GAMMA"); + if (gamma<40) + { + gamma=40; + } + else if (gamma>240) + { + gamma=240; + } + // add default words if needed QStrList &annotationFromBrief = Config_getList("ABBREVIATE_BRIEF"); diff --git a/src/config.xml b/src/config.xml index 0c00f5e..088f9e7 100644 --- a/src/config.xml +++ b/src/config.xml @@ -222,15 +222,15 @@ sources. Doxygen will then generate output that is tailored for VHDL. ' defval='0'/>
  • "); if (isLinkable()) { if (definitionType()==Definition::TypeGroup && ((const GroupDef*)this)->groupTitle()) @@ -1276,6 +1288,7 @@ void Definition::writePathFragment(OutputList &ol) const ol.docify(m_impl->localName); ol.endBold(); } + ol.writeString("
  • \n"); } void Definition::writeNavigationPath(OutputList &ol) const @@ -1283,9 +1296,11 @@ void Definition::writeNavigationPath(OutputList &ol) const ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - ol.writeString("
    "); + ol.writeString("
    \n"); + ol.writeString("
      \n"); writePathFragment(ol); - ol.writeString("\n
    \n"); + ol.writeString(" \n"); + ol.writeString("
    \n"); ol.popGeneratorState(); } diff --git a/src/definition.h b/src/definition.h index 050772d..9c3c1c5 100644 --- a/src/definition.h +++ b/src/definition.h @@ -307,6 +307,7 @@ class Definition : public DefinitionIntf, public LockableObj void writePathFragment(OutputList &ol) const; void writeNavigationPath(OutputList &ol) const; virtual void writeQuickMemberLinks(OutputList &,MemberDef *) const {} + virtual void writeSummaryLinks(OutputList &) {} /*! Writes the documentation anchors of the definition to * the Doxygen::tagFile stream. diff --git a/src/dirdef.cpp b/src/dirdef.cpp index 1ca01b5..bc0f4f9 100644 --- a/src/dirdef.cpp +++ b/src/dirdef.cpp @@ -205,7 +205,7 @@ void DirDef::writeSubDirList(OutputList &ol) // write subdir list if (m_subdirs.count()>0) { - ol.startMemberHeader(); + ol.startMemberHeader("subdirs"); ol.parseText(theTranslator->trDir(TRUE,FALSE)); ol.endMemberHeader(); ol.startMemberList(); @@ -247,7 +247,7 @@ void DirDef::writeFileList(OutputList &ol) // write file list if (m_fileList->count()>0) { - ol.startMemberHeader(); + ol.startMemberHeader("files"); ol.parseText(theTranslator->trFile(TRUE,FALSE)); ol.endMemberHeader(); ol.startMemberList(); @@ -326,7 +326,6 @@ void DirDef::writeDocumentation(OutputList &ol) writeNavigationPath(ol); ol.endQuickIndices(); - ol.startContents(); startTitle(ol,getOutputFileBase()); ol.pushGeneratorState(); @@ -337,6 +336,7 @@ void DirDef::writeDocumentation(OutputList &ol) ol.parseText(title); ol.popGeneratorState(); endTitle(ol,getOutputFileBase(),title); + ol.startContents(); if (!Config_getString("GENERATE_TAGFILE").isEmpty()) { @@ -712,6 +712,7 @@ void DirRelation::writeDocumentation(OutputList &ol) // write navigation path m_src->writeNavigationPath(ol); + ol.startContents(); //startTitle(ol,getOutputFileBase()); // ol.parseText(shortTitle); diff --git a/src/doctokenizer.l b/src/doctokenizer.l index 97b29ca..52cb7d1 100644 --- a/src/doctokenizer.l +++ b/src/doctokenizer.l @@ -297,7 +297,7 @@ LISTITEM {BLANK}*{OPTSTARS}"-"("#")?{WS} ENDLIST {BLANK}*{OPTSTARS}"."{BLANK}*\n ATTRIB {ID}{WS}*("="{WS}*(("\""[^\"]*"\"")|("'"[^\']*"'")|[^ \t\r\n'"><]+))? URLCHAR [a-z_A-Z0-9\!\~\,\:\;\'\$\?\@\&\%\#\.\-\+\/\=] -URLMASK (([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+))([({]{URLCHAR}*[)}])? +URLMASK ({URLCHAR}+([({]{URLCHAR}*[)}])?)* FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+] FILEECHAR [a-z_A-Z0-9\-\+] HFILEMASK ("."{FILESCHAR}*{FILEECHAR}+)* diff --git a/src/dot.cpp b/src/dot.cpp index a951cf6..04be1c1 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -268,11 +268,12 @@ static void setDotFontPath(const char *path) ASSERT(g_dotFontPath.isEmpty()); g_dotFontPath = portable_getenv("DOTFONTPATH"); QCString newFontPath = Config_getString("DOT_FONTPATH"); - if (!newFontPath.isEmpty() && path) + QCString spath = path; + if (!newFontPath.isEmpty() && !spath.isEmpty()) { - newFontPath.prepend(path+portable_pathListSeparator()); + newFontPath.prepend(spath+portable_pathListSeparator()); } - else if (newFontPath.isEmpty() && path) + else if (newFontPath.isEmpty() && !spath.isEmpty()) { newFontPath=path; } @@ -286,7 +287,14 @@ static void setDotFontPath(const char *path) static void unsetDotFontPath() { - portable_setenv("DOTFONTPATH",g_dotFontPath); + if (g_dotFontPath.isEmpty()) + { + portable_unsetenv("DOTFONTPATH"); + } + else + { + portable_setenv("DOTFONTPATH",g_dotFontPath); + } g_dotFontPath=""; } diff --git a/src/doxygen.cpp b/src/doxygen.cpp index e3fffb3..87e66d1 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -5687,13 +5687,26 @@ static void findMember(EntryNav *rootNav, } else if (cd) // member specialization { + MemberNameIterator mni(*mn); + MemberDef *declMd=0; + MemberDef *md=0; + for (mni.toFirst();(md=mni.current());++mni) + { + if (md->getClassDef()==cd) + { + // TODO: we should probably also check for matching arguments + declMd = md; + break; + } + } MemberDef::MemberType mtype=MemberDef::Function; ArgumentList *tArgList = new ArgumentList; // getTemplateArgumentsFromName(cd->name()+"::"+funcName,root->tArgLists); - MemberDef *md=new MemberDef( + md=new MemberDef( root->fileName,root->startLine, funcType,funcName,funcArgs,exceptions, - root->protection,root->virt,root->stat,Member, + declMd ? declMd->protection() : root->protection, + root->virt,root->stat,Member, mtype,tArgList,root->argList); //printf("new specialized member %s args=`%s'\n",md->name().data(),funcArgs.data()); md->setTagInfo(rootNav->tagInfo()); @@ -8040,7 +8053,7 @@ static void buildExampleList(EntryNav *rootNav) { PageDef *pd=new PageDef(root->fileName,root->startLine, root->name,root->brief+root->doc+root->inbodyDocs,root->args); - pd->setFileName(convertNameToFile(pd->name()+"-example",TRUE,FALSE)); + pd->setFileName(convertNameToFile(pd->name()+"-example")); pd->addSectionsToDefinition(root->anchors); //pi->addSections(root->anchors); @@ -10187,7 +10200,7 @@ void generateOutput() Doxygen::indexList.addImageFile("tab_b.gif"); Doxygen::indexList.addStyleSheetFile("tabs.css"); Doxygen::indexList.addImageFile("doxygen.png"); - if (Config_getBool("HTML_DYNAMIC_SECTIONS")) HtmlGenerator::generateSectionImages(); + //if (Config_getBool("HTML_DYNAMIC_SECTIONS")) HtmlGenerator::generateSectionImages(); copyStyleSheet(); } if (Config_getBool("GENERATE_LATEX")) @@ -10276,7 +10289,6 @@ void generateOutput() exit(1); } HtmlGenerator::writeSearchData(searchDirName); - writeSearchStyleSheet(); if (!serverBasedSearch) // client side search index { writeJavascriptSearchIndex(); diff --git a/src/doxygen.css b/src/doxygen.css index d6aaf28..b9053a7 100644 --- a/src/doxygen.css +++ b/src/doxygen.css @@ -8,7 +8,6 @@ body, table, div, p, dl { /* @group Heading Levels */ h1 { - text-align: center; font-size: 150%; } @@ -64,8 +63,8 @@ h3.version { } div.qindex, div.navtab{ - background-color: #e8eef2; - border: 1px solid #84b0c7; + background-color: ##ee; + border: 1px solid ##b0; text-align: center; margin: 2px; padding: 2px; @@ -83,13 +82,13 @@ div.navtab { /* @group Link Styling */ a { - color: #153788; + color: ##50; font-weight: normal; text-decoration: none; } .contents a:visited { - color: #1b77c5; + color: ##60; } a:hover { @@ -102,9 +101,9 @@ a.qindex { a.qindexHL { font-weight: bold; - background-color: #6666cc; + background-color: ##AA; color: #ffffff; - border: 1px double #9295C2; + border: 1px double ##98; } .contents a.qindexHL:visited { @@ -119,11 +118,11 @@ a.elRef { } a.code { - color: #3030f0; + color: ##60; } a.codeRef { - color: #3030f0; + color: ##60; } /* @end */ @@ -138,8 +137,8 @@ dl.el { } pre.fragment { - border: 1px solid #CCCCCC; - background-color: #f5f5f5; + border: 1px solid ##CC; + background-color: ##f5; padding: 4px 6px; margin: 4px 8px 4px 2px; overflow: auto; @@ -171,27 +170,32 @@ div.groupText { body { background: white; color: black; - margin-right: 20px; - margin-left: 20px; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 10px; + margin-right: 10px; } td.indexkey { - background-color: #e8eef2; + background-color: ##ee; font-weight: bold; - border: 1px solid #CCCCCC; + border: 1px solid ##cc; margin: 2px 0px 2px 0; padding: 2px 10px; } td.indexvalue { - background-color: #e8eef2; - border: 1px solid #CCCCCC; + background-color: ##ee; + border: 1px solid ##cc; padding: 2px 10px; margin: 2px 0px; } tr.memlist { - background-color: #f0f0f0; + background-color: ##f0; } p.formulaDsp { @@ -217,6 +221,11 @@ div.center img { border: 0px; } +address.footer { + text-align: right; + padding-right: 12px; +} + img.footer { border: 0px; vertical-align: middle; @@ -270,6 +279,7 @@ span.vhdllogic { /* @end */ +/* .search { color: #003399; font-weight: bold; @@ -286,6 +296,7 @@ input.search { font-weight: normal; background-color: #e8eef2; } +*/ td.tiny { font-size: 75%; @@ -294,18 +305,18 @@ td.tiny { .dirtab { padding: 4px; border-collapse: collapse; - border: 1px solid #84b0c7; + border: 1px solid ##b0; } th.dirtab { - background: #e8eef2; + background: ##ee; font-weight: bold; } hr { height: 0px; border: none; - border-top: 1px solid #666; + border-top: 1px solid ##66; } hr.footer { @@ -317,7 +328,7 @@ hr.footer { .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #FAFAFA; + background-color: ##FA; border: none; margin: 4px; padding: 1px 0 0 8px; @@ -329,7 +340,7 @@ hr.footer { } .memItemLeft, .memItemRight, .memTemplParams { - border-top: 1px solid #ccc; + border-top: 1px solid ##cc; } .memItemLeft, .memTemplItemLeft { @@ -337,7 +348,7 @@ hr.footer { } .memTemplParams { - color: #606060; + color: ##60; white-space: nowrap; } @@ -349,14 +360,14 @@ hr.footer { .memtemplate { font-size: 80%; - color: #606060; + color: ##60; font-weight: normal; margin-left: 3px; } .memnav { - background-color: #e8eef2; - border: 1px solid #84b0c7; + background-color: ##ee; + border: 1px solid ##b0; text-align: center; margin: 2px; margin-right: 15px; @@ -375,19 +386,21 @@ hr.footer { } .memproto { - border-top: 1px solid #84b0c7; - border-left: 1px solid #84b0c7; - border-right: 1px solid #84b0c7; + border-top: 1px solid ##80; + border-left: 1px solid ##80; + border-right: 1px solid ##80; padding: 0; - background-color: #d5e1e8; + background-color: ##c8; + color: ##2b; font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); /* firefox specific markup */ - background-image: -moz-linear-gradient(rgba(228, 233, 245, 1.0) 0%, rgba(193, 205, 232, 1.0) 100%); + background-image: -moz-linear-gradient(center top, ##F8, ##E8 30%, ##E0 90%, ##D0); -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; -moz-border-radius-topright: 8px; -moz-border-radius-topleft: 8px; /* webkit specific markup */ - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(228, 233, 245, 1.0)), to(rgba(193, 205, 232, 1.0))); + background-image: -webkit-gradient(linear,center top,center bottom,from(##F8),color-stop(0.3,##E0),color-stop(0.9,##E0),to(##D0)); -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -webkit-border-top-right-radius: 8px; -webkit-border-top-left-radius: 8px; @@ -395,20 +408,22 @@ hr.footer { } .memdoc { - border-bottom: 1px solid #84b0c7; - border-left: 1px solid #84b0c7; - border-right: 1px solid #84b0c7; + border-bottom: 1px solid ##80; + border-left: 1px solid ##80; + border-right: 1px solid ##80; padding: 2px 5px; - background-color: #eef3f5; + background-color: ##E0; border-top-width: 0; /* firefox specific markup */ -moz-border-radius-bottomleft: 8px; -moz-border-radius-bottomright: 8px; -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, ##FF 0%, ##F8 80%, ##F0); /* webkit specific markup */ -webkit-border-bottom-left-radius: 8px; -webkit-border-bottom-right-radius: 8px; -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(##FF), color-stop(0.2,##F8), to(##F0)); } .paramkey { @@ -435,7 +450,7 @@ hr.footer { .ftvtree { font-family: sans-serif; - margin: 0.5em; + margin: 0px; } /* these are for tree view when used as main index */ @@ -443,6 +458,7 @@ hr.footer { .directory { font-size: 9pt; font-weight: bold; + margin: 5px; } .directory h3 { @@ -520,9 +536,13 @@ proper pixel height of your image. /* @end */ +div.dynheader { + margin-top: 8px; +} + address { font-style: normal; - color: #333; + color: ##33; } table.doxtable { @@ -530,12 +550,12 @@ table.doxtable { } table.doxtable td, table.doxtable th { - border: 1px solid #153788; + border: 1px solid ##37; padding: 3px 7px 2px; } table.doxtable th { - background-color: #254798; + background-color: ##47; color: #FFFFFF; font-size: 110%; padding-bottom: 4px; @@ -543,3 +563,78 @@ table.doxtable th { text-align:left; } +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:##9b; + border:solid 1px ##ca; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; +} + +.navpath a +{ + height:32px; + display:block; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + padding-right: 15px; + text-decoration: none; + outline: none; + color:##45; +} + +.navpath a:hover +{ + color:##80; +} + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.header +{ + background-color: ##FA; + margin: 0px; + border-bottom: 1px solid ##CC; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + diff --git a/src/doxygen_css.h b/src/doxygen_css.h index 5d58fad..3d91609 100644 --- a/src/doxygen_css.h +++ b/src/doxygen_css.h @@ -8,7 +8,6 @@ "/* @group Heading Levels */\n" "\n" "h1 {\n" -" text-align: center;\n" " font-size: 150%;\n" "}\n" "\n" @@ -64,8 +63,8 @@ "}\n" "\n" "div.qindex, div.navtab{\n" -" background-color: #e8eef2;\n" -" border: 1px solid #84b0c7;\n" +" background-color: ##ee;\n" +" border: 1px solid ##b0;\n" " text-align: center;\n" " margin: 2px;\n" " padding: 2px;\n" @@ -83,13 +82,13 @@ "/* @group Link Styling */\n" "\n" "a {\n" -" color: #153788;\n" +" color: ##50;\n" " font-weight: normal;\n" " text-decoration: none;\n" "}\n" "\n" ".contents a:visited {\n" -" color: #1b77c5;\n" +" color: ##60;\n" "}\n" "\n" "a:hover {\n" @@ -102,9 +101,9 @@ "\n" "a.qindexHL {\n" " font-weight: bold;\n" -" background-color: #6666cc;\n" +" background-color: ##AA;\n" " color: #ffffff;\n" -" border: 1px double #9295C2;\n" +" border: 1px double ##98;\n" "}\n" "\n" ".contents a.qindexHL:visited {\n" @@ -119,11 +118,11 @@ "}\n" "\n" "a.code {\n" -" color: #3030f0;\n" +" color: ##60;\n" "}\n" "\n" "a.codeRef {\n" -" color: #3030f0;\n" +" color: ##60;\n" "}\n" "\n" "/* @end */\n" @@ -138,8 +137,8 @@ "}\n" "\n" "pre.fragment {\n" -" border: 1px solid #CCCCCC;\n" -" background-color: #f5f5f5;\n" +" border: 1px solid ##CC;\n" +" background-color: ##f5;\n" " padding: 4px 6px;\n" " margin: 4px 8px 4px 2px;\n" " overflow: auto;\n" @@ -171,27 +170,32 @@ "body {\n" " background: white;\n" " color: black;\n" -" margin-right: 20px;\n" -" margin-left: 20px;\n" +" margin: 0;\n" +"}\n" +"\n" +"div.contents {\n" +" margin-top: 10px;\n" +" margin-left: 10px;\n" +" margin-right: 10px;\n" "}\n" "\n" "td.indexkey {\n" -" background-color: #e8eef2;\n" +" background-color: ##ee;\n" " font-weight: bold;\n" -" border: 1px solid #CCCCCC;\n" +" border: 1px solid ##cc;\n" " margin: 2px 0px 2px 0;\n" " padding: 2px 10px;\n" "}\n" "\n" "td.indexvalue {\n" -" background-color: #e8eef2;\n" -" border: 1px solid #CCCCCC;\n" +" background-color: ##ee;\n" +" border: 1px solid ##cc;\n" " padding: 2px 10px;\n" " margin: 2px 0px;\n" "}\n" "\n" "tr.memlist {\n" -" background-color: #f0f0f0;\n" +" background-color: ##f0;\n" "}\n" "\n" "p.formulaDsp {\n" @@ -217,6 +221,11 @@ " border: 0px;\n" "}\n" "\n" +"address.footer {\n" +" text-align: right;\n" +" padding-right: 12px;\n" +"}\n" +"\n" "img.footer {\n" " border: 0px;\n" " vertical-align: middle;\n" @@ -270,6 +279,7 @@ "\n" "/* @end */\n" "\n" +"/*\n" ".search {\n" " color: #003399;\n" " font-weight: bold;\n" @@ -286,6 +296,7 @@ " font-weight: normal;\n" " background-color: #e8eef2;\n" "}\n" +"*/\n" "\n" "td.tiny {\n" " font-size: 75%;\n" @@ -294,18 +305,18 @@ ".dirtab {\n" " padding: 4px;\n" " border-collapse: collapse;\n" -" border: 1px solid #84b0c7;\n" +" border: 1px solid ##b0;\n" "}\n" "\n" "th.dirtab {\n" -" background: #e8eef2;\n" +" background: ##ee;\n" " font-weight: bold;\n" "}\n" "\n" "hr {\n" " height: 0px;\n" " border: none;\n" -" border-top: 1px solid #666;\n" +" border-top: 1px solid ##66;\n" "}\n" "\n" "hr.footer {\n" @@ -317,7 +328,7 @@ ".mdescLeft, .mdescRight,\n" ".memItemLeft, .memItemRight,\n" ".memTemplItemLeft, .memTemplItemRight, .memTemplParams {\n" -" background-color: #FAFAFA;\n" +" background-color: ##FA;\n" " border: none;\n" " margin: 4px;\n" " padding: 1px 0 0 8px;\n" @@ -329,7 +340,7 @@ "}\n" "\n" ".memItemLeft, .memItemRight, .memTemplParams {\n" -" border-top: 1px solid #ccc;\n" +" border-top: 1px solid ##cc;\n" "}\n" "\n" ".memItemLeft, .memTemplItemLeft {\n" @@ -337,7 +348,7 @@ "}\n" "\n" ".memTemplParams {\n" -" color: #606060;\n" +" color: ##60;\n" " white-space: nowrap;\n" "}\n" "\n" @@ -349,14 +360,14 @@ "\n" ".memtemplate {\n" " font-size: 80%;\n" -" color: #606060;\n" +" color: ##60;\n" " font-weight: normal;\n" " margin-left: 3px;\n" "}\n" "\n" ".memnav {\n" -" background-color: #e8eef2;\n" -" border: 1px solid #84b0c7;\n" +" background-color: ##ee;\n" +" border: 1px solid ##b0;\n" " text-align: center;\n" " margin: 2px;\n" " margin-right: 15px;\n" @@ -375,19 +386,21 @@ "}\n" "\n" ".memproto {\n" -" border-top: 1px solid #84b0c7; \n" -" border-left: 1px solid #84b0c7; \n" -" border-right: 1px solid #84b0c7; \n" +" border-top: 1px solid ##80;\n" +" border-left: 1px solid ##80;\n" +" border-right: 1px solid ##80;\n" " padding: 0;\n" -" background-color: #d5e1e8;\n" +" background-color: ##c8;\n" +" color: ##2b;\n" " font-weight: bold;\n" +" text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n" " /* firefox specific markup */\n" -" background-image: -moz-linear-gradient(rgba(228, 233, 245, 1.0) 0%, rgba(193, 205, 232, 1.0) 100%);\n" +" background-image: -moz-linear-gradient(center top, ##F8, ##E8 30%, ##E0 90%, ##D0);\n" " -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n" " -moz-border-radius-topright: 8px;\n" " -moz-border-radius-topleft: 8px;\n" " /* webkit specific markup */\n" -" background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(228, 233, 245, 1.0)), to(rgba(193, 205, 232, 1.0)));\n" +" background-image: -webkit-gradient(linear,center top,center bottom,from(##F8),color-stop(0.3,##E0),color-stop(0.9,##E0),to(##D0));\n" " -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n" " -webkit-border-top-right-radius: 8px;\n" " -webkit-border-top-left-radius: 8px;\n" @@ -395,20 +408,22 @@ "}\n" "\n" ".memdoc {\n" -" border-bottom: 1px solid #84b0c7; \n" -" border-left: 1px solid #84b0c7; \n" -" border-right: 1px solid #84b0c7; \n" +" border-bottom: 1px solid ##80; \n" +" border-left: 1px solid ##80; \n" +" border-right: 1px solid ##80; \n" " padding: 2px 5px;\n" -" background-color: #eef3f5;\n" +" background-color: ##E0;\n" " border-top-width: 0;\n" " /* firefox specific markup */\n" " -moz-border-radius-bottomleft: 8px;\n" " -moz-border-radius-bottomright: 8px;\n" " -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n" +" background-image: -moz-linear-gradient(center top, ##FF 0%, ##F8 80%, ##F0);\n" " /* webkit specific markup */\n" " -webkit-border-bottom-left-radius: 8px;\n" " -webkit-border-bottom-right-radius: 8px;\n" " -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n" +" background-image: -webkit-gradient(linear,center top,center bottom,from(##FF), color-stop(0.2,##F8), to(##F0));\n" "}\n" "\n" ".paramkey {\n" @@ -435,7 +450,7 @@ "\n" ".ftvtree {\n" " font-family: sans-serif;\n" -" margin: 0.5em;\n" +" margin: 0px;\n" "}\n" "\n" "/* these are for tree view when used as main index */\n" @@ -443,6 +458,7 @@ ".directory {\n" " font-size: 9pt;\n" " font-weight: bold;\n" +" margin: 5px;\n" "}\n" "\n" ".directory h3 {\n" @@ -520,9 +536,13 @@ "\n" "/* @end */\n" "\n" +"div.dynheader {\n" +" margin-top: 8px;\n" +"}\n" +"\n" "address {\n" " font-style: normal;\n" -" color: #333;\n" +" color: ##33;\n" "}\n" "\n" "table.doxtable {\n" @@ -530,12 +550,12 @@ "}\n" "\n" "table.doxtable td, table.doxtable th {\n" -" border: 1px solid #153788;\n" +" border: 1px solid ##37;\n" " padding: 3px 7px 2px;\n" "}\n" "\n" "table.doxtable th {\n" -" background-color: #254798;\n" +" background-color: ##47;\n" " color: #FFFFFF;\n" " font-size: 110%;\n" " padding-bottom: 4px;\n" @@ -543,3 +563,78 @@ " text-align:left;\n" "}\n" "\n" +".tabsearch {\n" +" top: 0px;\n" +" left: 10px;\n" +" height: 36px;\n" +" background-image: url('tab_b.png');\n" +" z-index: 101;\n" +" overflow: hidden;\n" +" font-size: 13px;\n" +"}\n" +"\n" +".navpath ul\n" +"{\n" +" font-size: 11px;\n" +" background-image:url('tab_b.png');\n" +" background-repeat:repeat-x;\n" +" height:30px;\n" +" line-height:30px;\n" +" color:##9b;\n" +" border:solid 1px ##ca;\n" +" overflow:hidden;\n" +" margin:0px;\n" +" padding:0px;\n" +"}\n" +"\n" +".navpath li\n" +"{\n" +" list-style-type:none;\n" +" float:left;\n" +" padding-left:10px;\n" +"}\n" +"\n" +".navpath a\n" +"{\n" +" height:32px;\n" +" display:block;\n" +" background-image:url('bc_s.png');\n" +" background-repeat:no-repeat;\n" +" background-position:right;\n" +" padding-right: 15px;\n" +" text-decoration: none;\n" +" outline: none;\n" +" color:##45;\n" +"}\n" +"\n" +".navpath a:hover\n" +"{\n" +" color:##80;\n" +"}\n" +"\n" +"div.summary\n" +"{\n" +" float: right;\n" +" font-size: 8pt;\n" +" padding-right: 5px;\n" +" width: 50%;\n" +" text-align: right;\n" +"} \n" +"\n" +"div.summary a\n" +"{\n" +" white-space: nowrap;\n" +"}\n" +"\n" +"div.header\n" +"{\n" +" background-color: ##FA;\n" +" margin: 0px;\n" +" border-bottom: 1px solid ##CC;\n" +"}\n" +"\n" +"div.headertitle\n" +"{\n" +" padding: 5px 5px 5px 10px;\n" +"}\n" +"\n" diff --git a/src/filedef.cpp b/src/filedef.cpp index 0f2889a..d81a5fb 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -457,6 +457,41 @@ void FileDef::writeAuthorSection(OutputList &ol) ol.popGeneratorState(); } +void FileDef::writeSummaryLinks(OutputList &ol) +{ + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + QListIterator eli( + LayoutDocManager::instance().docEntries(LayoutDocManager::File)); + LayoutDocEntry *lde; + bool first=TRUE; + for (eli.toFirst();(lde=eli.current());++eli) + { + if ((lde->kind()==LayoutDocEntry::FileClasses && classSDict && classSDict->declVisible()) || + (lde->kind()==LayoutDocEntry::FileNamespaces && namespaceSDict && namespaceSDict->declVisible()) + ) + { + LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde; + QCString label = lde->kind()==LayoutDocEntry::FileClasses ? "nested-classes" : "namespaces"; + writeSummaryLink(ol,label,ls->title,first); + } + else if (lde->kind()==LayoutDocEntry::MemberDecl) + { + LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde; + MemberList * ml = getMemberList(lmd->type); + if (ml && ml->declVisible()) + { + writeSummaryLink(ol,ml->listTypeAsString(),lmd->title,first); + } + } + } + if (!first) + { + ol.writeString(" \n"); + } + ol.popGeneratorState(); +} + /*! Write the documentation page for this file to the file of output generators \a ol. */ @@ -485,9 +520,8 @@ void FileDef::writeDocumentation(OutputList &ol) startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,TRUE); getDirDef()->writeNavigationPath(ol); ol.endQuickIndices(); - ol.startContents(); QCString pageTitleShort=theTranslator->trFileReference(name()); - startTitle(ol,getOutputFileBase()); + startTitle(ol,getOutputFileBase(),this); ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); ol.parseText(pageTitleShort); // Html only @@ -501,11 +535,14 @@ void FileDef::writeDocumentation(OutputList &ol) else { startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible); - startTitle(ol,getOutputFileBase()); + startTitle(ol,getOutputFileBase(),this); ol.parseText(pageTitle); addGroupListToTitle(ol,this); endTitle(ol,getOutputFileBase(),title); } + + ol.startContents(); + if (!fileVersion.isEmpty()) { ol.disableAllBut(OutputGenerator::Html); @@ -726,7 +763,6 @@ void FileDef::writeSource(OutputList &ol) startFile(ol,getSourceFileBase(),0,pageTitle,HLI_FileVisible,TRUE); getDirDef()->writeNavigationPath(ol); ol.endQuickIndices(); - ol.startContents(); startTitle(ol,getOutputFileBase()); ol.parseText(name()); endTitle(ol,getOutputFileBase(),title); @@ -739,6 +775,8 @@ void FileDef::writeSource(OutputList &ol) endTitle(ol,getSourceFileBase(),0); } + ol.startContents(); + if (isLinkable()) { if (latexSourceCode) ol.disable(OutputGenerator::Latex); @@ -756,6 +794,7 @@ void FileDef::writeSource(OutputList &ol) FALSE,0,this ); ol.endCodeFragment(); + ol.endContents(); endFile(ol); ol.enableAll(); } diff --git a/src/filedef.h b/src/filedef.h index 9ca3bee..0ea156f 100644 --- a/src/filedef.h +++ b/src/filedef.h @@ -130,6 +130,7 @@ class FileDef : public Definition void writeDocumentation(OutputList &ol); void writeMemberPages(OutputList &ol); void writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const; + void writeSummaryLinks(OutputList &ol); void writeSource(OutputList &ol); void parseSource(); diff --git a/src/fortrancode.h b/src/fortrancode.h index a06908a..8880a25 100644 --- a/src/fortrancode.h +++ b/src/fortrancode.h @@ -28,7 +28,7 @@ class MemberDef; void parseFortranCode(CodeOutputInterface &,const char *,const QCString &, bool ,const char *,FileDef *fd=0, int startLine=-1,int endLine=-1,bool inlineFragment=FALSE, - MemberDef *memberDef=0); + MemberDef *memberDef=0,bool showLineNumbers=TRUE); void resetFortranCodeParserState(); void codeFreeScanner(); diff --git a/src/fortrancode.l b/src/fortrancode.l index d424159..d8f592c 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -988,7 +988,7 @@ void resetFortranCodeParserState() {} void parseFortranCode(CodeOutputInterface &od,const char *className,const QCString &s, bool exBlock, const char *exName,FileDef *fd, int startLine,int endLine,bool inlineFragment, - MemberDef *memberDef) + MemberDef *memberDef,bool) { //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd); diff --git a/src/fortranscanner.h b/src/fortranscanner.h index d9f43eb..52215f6 100644 --- a/src/fortranscanner.h +++ b/src/fortranscanner.h @@ -41,7 +41,8 @@ class FortranLanguageScanner : public ParserInterface int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, - MemberDef *memberDef=0 + MemberDef *memberDef=0, + bool showLineNumbers=TRUE ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/fortranscanner.l b/src/fortranscanner.l index 8c51d1a..0170907 100644 --- a/src/fortranscanner.l +++ b/src/fortranscanner.l @@ -154,7 +154,8 @@ static Argument *parameter; // element of parameter list static QCString argType; // fortran type of an argument of a parameter list static QCString argName; // last identifier name in variable list static QCString initializer; // initial value of a variable -static int initializerScope; // number if nested array scopes in initializer +static int initializerArrayScope; // number if nested array scopes in initializer +static int initializerScope; // number if nested function calls in initializer static QCString useModuleName; // name of module in the use statement static Protection defaultProtection; @@ -310,24 +311,34 @@ PREFIX (RECURSIVE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,2}(RECURSIVE|PURE|ELEMENTA } - /*------ ignore strings */ -<*>"\\\\" { /* ignore \\ */} -<*>"\\\""|\\\' { /* ignore \" and \' */} - + /*------ ignore strings that are not initialization strings */ +<*>"\\\\" { if (yy_top_state() == Initialization + || yy_top_state() == ArrayInitializer) + initializer+=yytext; + } +<*>"\\\""|\\\' { if (yy_top_state() == Initialization + || yy_top_state() == ArrayInitializer) + initializer+=yytext; + } \"|\' { // string ends with next quote without previous backspace if (yytext[0]!=stringStartSymbol) REJECT; // single vs double quote - // fprintf(stderr,"string end: %s\n",debugStr.data()); + if (yy_top_state() == Initialization + || yy_top_state() == ArrayInitializer) + initializer+=yytext; yy_pop_state(); } - -. { debugStr+=yytext; } // ignore String contents (especially '!') - +. { if (yy_top_state() == Initialization + || yy_top_state() == ArrayInitializer) + initializer+=yytext; + } <*>\"|\' { /* string starts */ if (YY_START == StrIgnore) REJECT; // ignore in simple comments - // fprintf(stderr,"string start: %c %d\n",yytext[0],yyLineNr); yy_push_state(YY_START); + if (yy_top_state() == Initialization + || yy_top_state() == ArrayInitializer) + initializer+=yytext; stringStartSymbol=yytext[0]; // single or double quote - BEGIN(String); debugStr="!^!"; + BEGIN(String); } /*------ ignore simple comment (not documentation comments) */ @@ -629,7 +640,7 @@ PREFIX (RECURSIVE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,2}(RECURSIVE|PURE|ELEMENTA {COMMA} {} {BS}"=" { yy_push_state(YY_START); initializer=""; - initializerScope = 0; + initializerScope = initializerArrayScope = 0; BEGIN(Initialization); } "\n" { currentModifiers = SymbolModifiers(); @@ -639,22 +650,33 @@ PREFIX (RECURSIVE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,2}(RECURSIVE|PURE|ELEMENTA } "(/" { initializer+=yytext; - initializerScope++; + initializerArrayScope++; BEGIN(ArrayInitializer); // initializer may contain comma } "/)" { initializer+=yytext; - initializerScope--; - if(initializerScope<=0) + initializerArrayScope--; + if(initializerArrayScope<=0) { - initializerScope = 0; // just in case + initializerArrayScope = 0; // just in case BEGIN(Initialization); } } . { initializer+=yytext; } -{COMMA} { yy_pop_state(); // end initialization - if (v_type == V_VARIABLE) last_entry->initializer= initializer; - } -"\n"|"!" { //| +"(" { initializerScope++; + initializer+=yytext; + } +")" { initializerScope--; + initializer+=yytext; + } +{COMMA} { if (initializerScope == 0) + { + yy_pop_state(); // end initialization + if (v_type == V_VARIABLE) last_entry->initializer= initializer; + } + else + initializer+=", "; + } +"\n"|"!" { //| yy_pop_state(); // end initialization if (v_type == V_VARIABLE) last_entry->initializer= initializer; unput(*yytext); @@ -1663,7 +1685,7 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt) isFixedForm = recognizeFixedForm(fileBuf); if (isFixedForm) { - printf("Prepassing fixed form of %s\n", yyFileName.data()); + printf("Prepassing fixed form of %s\n", fileName); //printf("---strlen=%d\n", strlen(fileBuf)); //clock_t start=clock(); @@ -1729,11 +1751,13 @@ void FortranLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf, int startLine, int endLine, bool inlineFragment, - MemberDef *memberDef + MemberDef *memberDef, + bool showLineNumbers ) { ::parseFortranCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName, - fileDef,startLine,endLine,inlineFragment,memberDef); + fileDef,startLine,endLine,inlineFragment,memberDef, + showLineNumbers); } bool FortranLanguageScanner::needsPreprocessing(const QCString &extension) diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp index a62888a..7e27b23 100644 --- a/src/ftvhelp.cpp +++ b/src/ftvhelp.cpp @@ -635,10 +635,10 @@ void FTVHelp::generateTreeView(QString* OutString) if (m_topLevelIndex) { - if (searchEngine) - { - t << "" << endl; - } + //if (searchEngine) + //{ + // t << "" << endl; + //} t << "\n"; t << "\n"; t << " \n"; @@ -744,36 +744,41 @@ void FTVHelp::generateTreeView(QString* OutString) t << " -->\n"; if (!serverBasedSearch) { - t << "
    \n"; - t << "
    \n"; - t << " " + t << "
    \n"; + t << "
    \n"; + t << " \n"; + t << " " << "\"\"/\n"; - t << " trSearch() << "\" accesskey=\"S\"\n"; - t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n"; - t << " onblur=\"searchBox.OnSearchFieldFocus(false)\" \n"; - t << " onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>\n"; - t << " \n"; - t << " \"\"/\n"; - t << "
     
    \n"; + t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n"; + t << " onblur=\"searchBox.OnSearchFieldFocus(false)\" \n"; + t << " onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>\n"; + t << " \n"; + t << " \"\"/\n"; + t << " \n"; + t << "
    \n"; t << "
    \n"; HtmlGenerator::writeSearchFooter(t,QCString()); } else { + t << "
    \n"; t << "
    \n"; + t << " \n"; t << "
    \n"; - t << " \"\"/\n"; + t << " \"\"/\n"; t << " trSearch() << "\" size=\"20\" accesskey=\"S\" \n"; t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n"; t << " onblur=\"searchBox.OnSearchFieldFocus(false)\"/>\n"; t << "
    \n"; - t << "
     
    \n"; + t << "
    \n"; t << "
    \n"; + t << "
    \n"; } } t << "
    \n"; diff --git a/src/groupdef.cpp b/src/groupdef.cpp index ea33244..71e5082 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -604,7 +604,7 @@ void GroupDef::writeFiles(OutputList &ol,const QCString &title) // write list of files if (fileList->count()>0) { - ol.startMemberHeader(); + ol.startMemberHeader("files"); ol.parseText(title); ol.endMemberHeader(); ol.startMemberList(); @@ -645,7 +645,7 @@ void GroupDef::writeNestedGroups(OutputList &ol,const QCString &title) // write list of groups if (groupList->count()>0) { - ol.startMemberHeader(); + ol.startMemberHeader("groups"); ol.parseText(title); ol.endMemberHeader(); ol.startMemberList(); @@ -681,7 +681,7 @@ void GroupDef::writeDirs(OutputList &ol,const QCString &title) // write list of directories if (dirList->count()>0) { - ol.startMemberHeader(); + ol.startMemberHeader("dirs"); ol.parseText(title); ol.endMemberHeader(); ol.startMemberList(); @@ -803,14 +803,57 @@ void GroupDef::writeAuthorSection(OutputList &ol) ol.popGeneratorState(); } +void GroupDef::writeSummaryLinks(OutputList &ol) +{ + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + QListIterator eli( + LayoutDocManager::instance().docEntries(LayoutDocManager::Group)); + LayoutDocEntry *lde; + bool first=TRUE; + for (eli.toFirst();(lde=eli.current());++eli) + { + if ((lde->kind()==LayoutDocEntry::GroupClasses && classSDict->declVisible()) || + (lde->kind()==LayoutDocEntry::GroupNamespaces && namespaceSDict->declVisible()) || + (lde->kind()==LayoutDocEntry::GroupFiles && fileList->count()>0) || + (lde->kind()==LayoutDocEntry::GroupNestedGroups && groupList->count()>0) || + (lde->kind()==LayoutDocEntry::GroupDirs && dirList->count()>0) + ) + { + LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde; + QCString label = lde->kind()==LayoutDocEntry::GroupClasses ? "nested-classes" : + lde->kind()==LayoutDocEntry::GroupNamespaces ? "namespaces" : + lde->kind()==LayoutDocEntry::GroupFiles ? "files" : + lde->kind()==LayoutDocEntry::GroupNestedGroups ? "groups" : + "dirs"; + writeSummaryLink(ol,label,ls->title,first); + } + else if (lde->kind()==LayoutDocEntry::MemberDecl) + { + LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde; + MemberList * ml = getMemberList(lmd->type); + if (ml && ml->declVisible()) + { + writeSummaryLink(ol,ml->listTypeAsString(),lmd->title,first); + } + } + } + if (!first) + { + ol.writeString("
    \n"); + } + ol.popGeneratorState(); +} + void GroupDef::writeDocumentation(OutputList &ol) { ol.pushGeneratorState(); startFile(ol,getOutputFileBase(),name(),title); - startTitle(ol,getOutputFileBase()); + startTitle(ol,getOutputFileBase(),this); ol.parseText(title); addGroupListToTitle(ol,this); endTitle(ol,getOutputFileBase(),title); + ol.startContents(); if (Doxygen::searchIndex) { diff --git a/src/groupdef.h b/src/groupdef.h index 341fa98..3e8d188 100644 --- a/src/groupdef.h +++ b/src/groupdef.h @@ -129,6 +129,7 @@ class GroupDef : public Definition void startMemberDocumentation(OutputList &ol); void endMemberDocumentation(OutputList &ol); void writeAuthorSection(OutputList &ol); + void writeSummaryLinks(OutputList &ol); QCString title; // title of the group bool titleSet; // true if title is not the same as the name diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index bb5bda7..a844dcb 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -16,9 +16,11 @@ */ #include +#include #include "qtbc.h" #include +#include #include "message.h" #include "htmlgen.h" #include "config.h" @@ -38,8 +40,8 @@ #include "dirdef.h" #include "vhdldocgen.h" #include "layout.h" +#include "image.h" -// #define GROUP_COLOR "#ff8080" //#define DBG_HTML(x) x; #define DBG_HTML(x) @@ -52,394 +54,412 @@ static const char search_script[]= #include "search_php.h" ; +static const char search_styleSheet[] = +#include "search_css.h" +; + + static QCString g_header; static QCString g_footer; //------------------------- Pictures for the Tabs ------------------------ -static unsigned char tab_b_gif[] = { - 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00, 0x80, 0x00, - 0x00, 0x84, 0xb0, 0xc7, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x02, 0x44, 0x01, 0x00, 0x3b +static unsigned char tab_a_png[36] = +{ + 31, 42, 59, 69, 73, 74, 75, 77, 77, + 77, 79, 80, 80, 82, 81, 83, 84, 86, + 87, 88, 89, 90, 91, 91, 93, 94, 94, + 96, 96, 97, 98, 98, 99, 99, 99, 100 +}; + +static unsigned char tab_b_png[36] = +{ + 240, 239, 238, 237, 235, 234, 234, 232, 231, + 229, 228, 227, 224, 224, 221, 219, 218, 217, + 214, 212, 210, 209, 206, 203, 202, 200, 198, + 196, 195, 193, 192, 190, 189, 188, 188, 188 +}; + +static unsigned char tab_h_png[36] = +{ + 199, 198, 196, 196, 195, 194, 193, 192, 189, + 188, 187, 184, 184, 181, 180, 178, 176, 173, + 171, 169, 166, 164, 163, 161, 159, 156, 155, + 153, 152, 149, 148, 147, 145, 145, 150, 161 +}; + +static unsigned char tab_s_png[36] = +{ + 187, 186, 185, 183, 182, 181, 180, 178, 176, + 174, 173, 171, 169, 167, 164, 163, 161, 158, + 156, 154, 152, 150, 148, 145, 143, 141, 140, + 138, 136, 134, 131, 131, 128, 126, 125, 124 +}; + +static unsigned char bc_s_png[240] = +{ + 150,187,187,148,148,148,148,148, + 147,175,186,147,147,147,147,147, + 146,153,185,185,146,146,146,146, + 144,144,177,183,144,144,144,144, + 144,144,159,182,144,144,144,144, + 143,143,144,179,181,143,143,143, + 142,142,142,165,180,142,142,142, + 141,141,141,144,178,178,141,141, + 139,139,139,139,167,176,139,139, + 137,137,137,137,146,174,137,137, + 137,137,137,137,137,169,173,137, + 135,135,135,135,135,150,171,135, + 133,133,133,133,133,135,167,169, + 132,132,132,132,132,132,154,167, + 129,129,129,129,129,129,140,164, + 129,129,129,129,129,129,154,163, + 127,127,127,127,127,128,161,161, + 125,125,125,125,125,141,158,125, + 123,123,123,123,123,152,156,123, + 121,121,121,121,129,154,121,121, + 120,120,120,120,143,152,120,120, + 118,118,118,120,150,150,118,118, + 117,117,117,132,148,117,117,117, + 114,114,114,142,145,114,114,114, + 113,113,120,143,113,113,113,113, + 111,111,133,141,111,111,111,111, + 110,112,140,140,110,110,110,110, + 109,124,138,109,109,109,109,109, + 107,133,136,107,107,107,107,107, + 111,134,106,106,106,106,106,106 }; -static unsigned int tab_b_gif_len = 35; - -static unsigned char tab_l_gif[] = { - 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x09, 0x00, 0x2c, 0x01, 0xd5, 0x00, - 0x00, 0xf6, 0xf7, 0xf9, 0xf1, 0xf4, 0xf7, 0xf6, 0xf8, 0xfa, 0xfc, 0xfd, - 0xfe, 0xfa, 0xfb, 0xfc, 0xf9, 0xfa, 0xfb, 0xf8, 0xf9, 0xfa, 0xea, 0xef, - 0xf3, 0xef, 0xf3, 0xf6, 0xc6, 0xd5, 0xdf, 0xd2, 0xde, 0xe6, 0xd8, 0xe2, - 0xe9, 0xde, 0xe7, 0xed, 0xdd, 0xe6, 0xec, 0xe5, 0xec, 0xf1, 0xe8, 0xee, - 0xf2, 0xf4, 0xf7, 0xf9, 0xf3, 0xf6, 0xf8, 0xb3, 0xc8, 0xd5, 0xc1, 0xd2, - 0xdd, 0xcb, 0xd9, 0xe2, 0xcf, 0xdc, 0xe4, 0xd6, 0xe1, 0xe8, 0x96, 0xb4, - 0xc5, 0x9d, 0xb9, 0xc9, 0xaf, 0xc2, 0xcd, 0xbb, 0xce, 0xd9, 0xc3, 0xd4, - 0xde, 0xc2, 0xd3, 0xdd, 0xc8, 0xd7, 0xe0, 0xcc, 0xda, 0xe2, 0xd5, 0xe1, - 0xe8, 0xd9, 0xe4, 0xea, 0xd7, 0xe2, 0xe8, 0xe5, 0xec, 0xf0, 0xeb, 0xf0, - 0xf3, 0x84, 0xb0, 0xc7, 0xd1, 0xde, 0xe5, 0xdc, 0xe6, 0xeb, 0xe3, 0xeb, - 0xef, 0xeb, 0xf1, 0xf4, 0xee, 0xf3, 0xf5, 0xf7, 0xfa, 0xfb, 0xfb, 0xfc, - 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 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, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x2c, 0x01, 0x00, 0x06, - 0xff, 0x40, 0x96, 0x50, 0xb1, 0xc9, 0x60, 0x48, 0x24, 0x21, 0x25, 0x43, - 0x71, 0x00, 0x56, 0x03, 0x16, 0x65, 0x32, 0x1a, 0x58, 0xad, 0x8a, 0xcc, - 0x08, 0x4a, 0x28, 0x08, 0x04, 0x93, 0xc4, 0xa0, 0x2b, 0x80, 0x98, 0x33, - 0x0d, 0x32, 0x24, 0xc0, 0xc6, 0x20, 0xbc, 0x6b, 0x76, 0x8a, 0xe4, 0x2d, - 0xcb, 0xe7, 0xf5, 0x75, 0x2a, 0x85, 0x22, 0x7d, 0xe3, 0x7c, 0x7d, 0x7f, - 0x01, 0x7c, 0x07, 0x07, 0x7e, 0x71, 0x28, 0x0f, 0x22, 0x0c, 0x24, 0x66, - 0x84, 0x07, 0x0c, 0x0c, 0x27, 0x8e, 0x6c, 0x28, 0x8c, 0x26, 0x26, 0x24, - 0x72, 0x91, 0x99, 0x0b, 0x9b, 0x90, 0x0c, 0x26, 0x0b, 0x21, 0xa0, 0x29, - 0x0f, 0xa2, 0xa4, 0x9b, 0x7b, 0xa8, 0xa3, 0xa5, 0x72, 0xad, 0xaa, 0xb0, - 0xa9, 0xaf, 0x84, 0xb1, 0xaf, 0xac, 0xb4, 0xa6, 0xb7, 0xbb, 0xba, 0xb3, - 0xae, 0xab, 0xa7, 0xbe, 0xb6, 0xc3, 0xc2, 0xc0, 0xbf, 0xb2, 0xb9, 0xc7, - 0xc4, 0xcb, 0xc6, 0xb2, 0xcc, 0xc9, 0xce, 0xb5, 0xd2, 0xbd, 0xcd, 0xbc, - 0x84, 0xd4, 0xc8, 0xd3, 0xd7, 0xd0, 0xb8, 0xd9, 0xdd, 0xd5, 0xcf, 0xd9, - 0xca, 0xe2, 0xdc, 0xdf, 0xe3, 0xe7, 0xe6, 0xea, 0xbe, 0xe4, 0xdb, 0xc5, - 0xeb, 0xc7, 0xed, 0xe1, 0xee, 0xd6, 0xec, 0xe9, 0xef, 0xf8, 0xf1, 0xf7, - 0xf5, 0xfc, 0xd1, 0xf0, 0xe5, 0xf9, 0xfc, 0x05, 0xa4, 0x07, 0x50, 0xdf, - 0x3f, 0x82, 0x08, 0x83, 0x1d, 0x9c, 0xc7, 0x10, 0xdb, 0x42, 0x6d, 0x0d, - 0xe5, 0x41, 0x9c, 0x08, 0xce, 0xe1, 0xc0, 0x86, 0x15, 0x25, 0x56, 0xdc, - 0x88, 0xee, 0x21, 0xc7, 0x6b, 0x1a, 0xf7, 0x15, 0x14, 0xd8, 0x2f, 0xe1, - 0xc4, 0x90, 0x1e, 0x3b, 0x5e, 0xa4, 0xa8, 0xb2, 0x24, 0xc6, 0x96, 0x23, - 0x4d, 0x66, 0x14, 0x29, 0x13, 0x66, 0xcd, 0x87, 0x28, 0x57, 0xce, 0x4c, - 0x89, 0x93, 0xe6, 0x4b, 0xe7, 0x90, 0xd2, 0x84, 0xb0, 0x20, 0x92, 0x01, - 0x49, 0x12, 0x29, 0x4c, 0x1c, 0x18, 0x10, 0x3a, 0x65, 0x44, 0x0b, 0xa1, - 0x43, 0xb5, 0xb4, 0x78, 0x2a, 0x34, 0x0c, 0x55, 0xa8, 0x68, 0xa0, 0x0a, - 0x25, 0x11, 0x41, 0xab, 0x90, 0xa3, 0x5e, 0xc1, 0x4e, 0x1d, 0x4b, 0x62, - 0xac, 0xd9, 0x16, 0x65, 0xa7, 0x0e, 0x58, 0xb1, 0x82, 0x00, 0x81, 0xb4, - 0x6b, 0xbb, 0x78, 0x21, 0xc1, 0xd6, 0xed, 0x97, 0x32, 0x74, 0xdd, 0xd6, - 0x09, 0x00, 0x21, 0xaf, 0x9a, 0x35, 0x74, 0xdb, 0xe6, 0xe9, 0x1b, 0x97, - 0xc0, 0x5d, 0x01, 0x24, 0xac, 0xb4, 0x25, 0x83, 0x58, 0xed, 0xe2, 0x2e, - 0x69, 0x5b, 0xac, 0x5d, 0x1c, 0x59, 0xad, 0x95, 0xca, 0x66, 0x8f, 0x9e, - 0x45, 0xeb, 0xf5, 0x6b, 0x67, 0x16, 0x60, 0xb5, 0x86, 0x86, 0x3a, 0x7a, - 0xeb, 0xe7, 0xd2, 0x9e, 0x3b, 0xa3, 0x06, 0x7d, 0xba, 0xb5, 0x6a, 0xd7, - 0x61, 0x61, 0x8b, 0x96, 0x4d, 0x9a, 0xb6, 0xe9, 0xd7, 0xb8, 0x63, 0xe7, - 0x9e, 0xbd, 0xbb, 0x76, 0xef, 0xdb, 0xba, 0x83, 0xf3, 0x16, 0xee, 0x9b, - 0x38, 0xf0, 0xe1, 0xc8, 0x8b, 0x27, 0x3f, 0xae, 0xbc, 0x39, 0xf3, 0xe7, - 0xa9, 0x8d, 0x47, 0x5f, 0x3e, 0xdd, 0x79, 0x75, 0xe8, 0xac, 0x7f, 0x5f, - 0xdf, 0x9e, 0x5d, 0x7a, 0x77, 0xea, 0xdf, 0xad, 0x87, 0xc7, 0xbe, 0xba, - 0xbc, 0x6d, 0xee, 0xe6, 0xb5, 0x8f, 0x47, 0x7f, 0x7e, 0xbd, 0xfb, 0xf4, - 0xde, 0xe1, 0x83, 0x97, 0x2f, 0x9e, 0x3e, 0xf9, 0xf6, 0xf6, 0xd9, 0xab, - 0xcf, 0xff, 0x1e, 0xbf, 0xff, 0xfd, 0xff, 0xc5, 0x17, 0xe0, 0x7c, 0x03, - 0xd6, 0x57, 0xe0, 0x7d, 0x00, 0x76, 0x16, 0x04, 0x00, 0x3b + +static unsigned char bc_s_a_png[240] = +{ + 241,241, 21, 0, 0, 0, 0, 0, + 162,205,117, 0, 0, 0, 0, 0, + 54,231,225, 3, 0, 0, 0, 0, + 0,198,215, 78, 0, 0, 0, 0, + 0, 93,211,186, 0, 0, 0, 0, + 0, 6,232,235, 42, 0, 0, 0, + 0, 0,132,203,147, 0, 0, 0, + 0, 0, 27,242,241, 15, 0, 0, + 0, 0, 0,168,205,108, 0, 0, + 0, 0, 0, 63,228,219, 0, 0, + 0, 0, 0, 0,207,221, 72, 0, + 0, 0, 0, 0,102,208,177, 0, + 0, 0, 0, 0, 9,238,240, 36, + 0, 0, 0, 0, 0,138,201,138, + 0, 0, 0, 0, 0, 77,187,158, + 0, 0, 0, 0, 0,159,204,120, + 0, 0, 0, 0, 15,241,241, 21, + 0, 0, 0, 0,111,208,171, 0, + 0, 0, 0, 0,210,222, 66, 0, + 0, 0, 0, 60,227,219, 0, 0, + 0, 0, 0,162,204,114, 0, 0, + 0, 0, 18,238,238, 21, 0, 0, + 0, 0,114,205,165, 0, 0, 0, + 0, 0,216,225, 60, 0, 0, 0, + 0, 66,226,216, 0, 0, 0, 0, + 0,165,204,111, 0, 0, 0, 0, + 21,241,241, 18, 0, 0, 0, 0, + 117,203,159, 0, 0, 0, 0, 0, + 219,227, 57, 0, 0, 0, 0, 0, + 211,201, 0, 0, 0, 0, 0, 0 }; -static unsigned int tab_l_gif_len = 706; - -static unsigned char tab_r_gif[] = { - 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x90, 0x01, 0x2c, 0x01, 0xd5, 0x00, - 0x00, 0xf6, 0xf7, 0xf9, 0xf1, 0xf4, 0xf7, 0xf6, 0xf8, 0xfa, 0xfc, 0xfd, - 0xfe, 0xfa, 0xfb, 0xfc, 0xf9, 0xfa, 0xfb, 0xf8, 0xf9, 0xfa, 0xea, 0xef, - 0xf3, 0xef, 0xf3, 0xf6, 0xc6, 0xd5, 0xdf, 0xd2, 0xde, 0xe6, 0xd8, 0xe2, - 0xe9, 0xde, 0xe7, 0xed, 0xdd, 0xe6, 0xec, 0xe5, 0xec, 0xf1, 0xe8, 0xee, - 0xf2, 0xf4, 0xf7, 0xf9, 0xf3, 0xf6, 0xf8, 0xb3, 0xc8, 0xd5, 0xc1, 0xd2, - 0xdd, 0xcb, 0xd9, 0xe2, 0xcf, 0xdc, 0xe4, 0xd6, 0xe1, 0xe8, 0x96, 0xb4, - 0xc5, 0x9d, 0xb9, 0xc9, 0xaf, 0xc2, 0xcd, 0xbb, 0xce, 0xd9, 0xc3, 0xd4, - 0xde, 0xc2, 0xd3, 0xdd, 0xc8, 0xd7, 0xe0, 0xcc, 0xda, 0xe2, 0xd5, 0xe1, - 0xe8, 0xd9, 0xe4, 0xea, 0xd7, 0xe2, 0xe8, 0xe5, 0xec, 0xf0, 0xeb, 0xf0, - 0xf3, 0x84, 0xb0, 0xc7, 0xd1, 0xde, 0xe5, 0xdc, 0xe6, 0xeb, 0xe3, 0xeb, - 0xef, 0xeb, 0xf1, 0xf4, 0xee, 0xf3, 0xf5, 0xf7, 0xfa, 0xfb, 0xfb, 0xfc, - 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 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, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x2c, 0x01, 0x00, 0x06, - 0xff, 0x40, 0x92, 0x70, 0x48, 0x2c, 0x1a, 0x8f, 0xc8, 0xa4, 0x72, 0xc9, - 0x6c, 0x3a, 0x9f, 0xd0, 0xa8, 0x74, 0x4a, 0xad, 0x5a, 0xaf, 0xd8, 0xac, - 0x76, 0x0b, 0x95, 0x68, 0x3c, 0xac, 0x70, 0x6b, 0x4c, 0x2e, 0x9b, 0xcf, - 0xe8, 0xb4, 0x7a, 0xcd, 0x6e, 0xbb, 0xdf, 0xf0, 0xb8, 0x7c, 0x4e, 0xaf, - 0xdb, 0xef, 0xf8, 0xbc, 0x7e, 0xcf, 0x77, 0x0f, 0x56, 0x10, 0x16, 0x1a, - 0x17, 0x1c, 0x61, 0x2b, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, - 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, - 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0x93, 0x2a, 0x10, 0x01, 0x29, 0x15, - 0x5e, 0x2c, 0x2a, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, - 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, - 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xb6, 0x10, 0x10, 0x29, 0x0f, 0x27, 0x1d, - 0x17, 0x15, 0xc6, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, - 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, - 0xe3, 0xe4, 0xe5, 0xe6, 0xda, 0xa5, 0x28, 0x22, 0x0c, 0x0c, 0x12, 0x12, - 0x01, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, - 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x00, 0x03, 0x0a, 0x1c, 0x48, 0xb0, 0xa0, - 0xc1, 0x83, 0x08, 0x13, 0xf2, 0x4b, 0x81, 0x22, 0x19, 0x03, 0x13, 0x83, - 0x52, 0x48, 0x9c, 0x48, 0xb1, 0xa2, 0xc5, 0x8b, 0x18, 0x33, 0x6a, 0xdc, - 0xc8, 0xb1, 0xa3, 0xc7, 0x8f, 0x20, 0x43, 0x8a, 0x1c, 0x49, 0xb2, 0xa4, - 0xc9, 0x93, 0x28, 0x53, 0xaa, 0x5c, 0xe9, 0x11, 0xc5, 0x81, 0x75, 0x26, - 0x40, 0x80, 0x20, 0xc1, 0xb2, 0xa6, 0xcd, 0x9b, 0x38, 0x73, 0xea, 0xdc, - 0xc9, 0xb3, 0xa7, 0x4f, 0xff, 0x96, 0x28, 0x1a, 0xc2, 0x04, 0xb1, 0x80, - 0x44, 0xd0, 0xa3, 0x48, 0x93, 0x2a, 0x5d, 0xca, 0xb4, 0xa9, 0xd3, 0xa7, - 0x50, 0xa3, 0x4a, 0x9d, 0x4a, 0xb5, 0xaa, 0xd5, 0xab, 0x58, 0xb3, 0x6a, - 0xdd, 0xca, 0xb5, 0xab, 0xd7, 0xaf, 0x53, 0x0f, 0x38, 0x34, 0xb1, 0x20, - 0x04, 0x89, 0x03, 0x68, 0xd3, 0xaa, 0x5d, 0xcb, 0xb6, 0xad, 0xdb, 0xb7, - 0x70, 0xe3, 0xca, 0x9d, 0x4b, 0xb7, 0xae, 0xdd, 0xbb, 0x78, 0xf3, 0xea, - 0xdd, 0xcb, 0xb7, 0xaf, 0xdf, 0xbf, 0x80, 0x03, 0xd3, 0x7d, 0x20, 0xe2, - 0x44, 0xcc, 0x10, 0x66, 0x1f, 0x28, 0x5e, 0xcc, 0xb8, 0xb1, 0xe3, 0xc7, - 0x90, 0x23, 0x4b, 0x9e, 0x4c, 0xb9, 0xb2, 0xe5, 0xcb, 0x98, 0x33, 0x6b, - 0xde, 0xcc, 0xb9, 0xb3, 0xe7, 0xcf, 0xa0, 0x43, 0x8b, 0x1e, 0x6d, 0xb9, - 0xf0, 0x43, 0xc4, 0x1f, 0x48, 0x9c, 0x58, 0xcd, 0xba, 0xb5, 0xeb, 0xd7, - 0xb0, 0x63, 0xcb, 0x9e, 0x4d, 0xbb, 0xb6, 0xed, 0xdb, 0xb8, 0x73, 0xeb, - 0xde, 0xcd, 0xbb, 0xb7, 0xef, 0xdf, 0xc0, 0x83, 0x0b, 0x1f, 0x4e, 0x1c, - 0xf7, 0xc3, 0x05, 0x1f, 0x4a, 0x94, 0x20, 0xc1, 0xae, 0xb9, 0xf3, 0xe7, - 0xd0, 0xa3, 0x4b, 0x9f, 0x4e, 0xbd, 0xba, 0xf5, 0xeb, 0xd8, 0xb3, 0x6b, - 0xdf, 0xce, 0xbd, 0xbb, 0xf7, 0xef, 0xe0, 0xc3, 0x8b, 0x1f, 0x4f, 0xbe, - 0x3c, 0x76, 0x13, 0x31, 0x91, 0x2b, 0x5f, 0x2e, 0xb3, 0xbd, 0xfb, 0xf7, - 0xf0, 0xe3, 0xcb, 0x9f, 0x4f, 0xbf, 0xbe, 0xfd, 0xfb, 0xf8, 0xf3, 0xeb, - 0xdf, 0xcf, 0xbf, 0xbf, 0xff, 0xff, 0x00, 0x06, 0x28, 0xe0, 0x80, 0x04, - 0x16, 0x98, 0x5f, 0x59, 0xc9, 0x95, 0x40, 0xc1, 0x72, 0x88, 0x35, 0xe8, - 0xe0, 0x83, 0x10, 0x46, 0x28, 0xe1, 0x84, 0x14, 0x56, 0x68, 0xe1, 0x85, - 0x18, 0x66, 0xa8, 0xe1, 0x86, 0x1c, 0x76, 0xe8, 0xff, 0xe1, 0x87, 0x20, - 0x86, 0x28, 0xe2, 0x88, 0x24, 0x96, 0xa8, 0x61, 0x82, 0x14, 0xa4, 0x48, - 0x82, 0x89, 0x2c, 0xb6, 0xe8, 0xe2, 0x8b, 0x30, 0xc6, 0x28, 0xe3, 0x8c, - 0x34, 0xd6, 0x68, 0xe2, 0x07, 0x09, 0x2a, 0xa8, 0x22, 0x8e, 0x3c, 0xf6, - 0xe8, 0xe3, 0x8f, 0x40, 0x06, 0x29, 0xe4, 0x90, 0x44, 0x16, 0x69, 0xe4, - 0x91, 0x48, 0x26, 0xa9, 0xe4, 0x92, 0x4c, 0x36, 0xe9, 0xe4, 0x93, 0x50, - 0x46, 0x29, 0xe5, 0x94, 0x54, 0x26, 0xa9, 0x5c, 0x8a, 0x3b, 0x56, 0xa9, - 0xe5, 0x96, 0x5c, 0x76, 0xe9, 0xe5, 0x97, 0x60, 0x86, 0x29, 0xe6, 0x98, - 0x5a, 0x5e, 0x89, 0x25, 0x09, 0x64, 0xa6, 0xa9, 0xe6, 0x9a, 0x6c, 0xb6, - 0xe9, 0xe6, 0x9b, 0x70, 0xfe, 0x68, 0x66, 0x96, 0x71, 0xd6, 0x69, 0xe7, - 0x9d, 0x78, 0xe6, 0xa9, 0xe7, 0x97, 0x73, 0x52, 0x80, 0xe6, 0x9e, 0x80, - 0x06, 0x2a, 0xe8, 0xa0, 0x84, 0xc2, 0xd9, 0xe7, 0x9f, 0x85, 0x26, 0xaa, - 0xe8, 0xa2, 0x8c, 0x36, 0x3a, 0xe4, 0xa1, 0x8e, 0x46, 0x2a, 0xe9, 0xa4, - 0x94, 0xc6, 0x09, 0x69, 0xa5, 0x98, 0x66, 0xaa, 0xe9, 0xa6, 0x4f, 0x5e, - 0xca, 0xe9, 0xa7, 0xa0, 0x86, 0xca, 0xa9, 0xa7, 0xa2, 0x96, 0x6a, 0xea, - 0xa9, 0x84, 0x92, 0x8a, 0xea, 0xaa, 0xac, 0xb6, 0xca, 0xa6, 0xaa, 0xae, - 0xc6, 0x2a, 0xeb, 0xac, 0x53, 0xc2, 0x4a, 0xeb, 0xad, 0xb8, 0xe6, 0x2a, - 0xa4, 0xad, 0xba, 0xf6, 0xea, 0xeb, 0xac, 0xbc, 0xfe, 0x2a, 0xec, 0xb0, - 0xa5, 0x06, 0x4b, 0xec, 0xb1, 0xc8, 0x56, 0x6a, 0x6c, 0xb2, 0xcc, 0x36, - 0x9b, 0xe8, 0xb2, 0xce, 0x46, 0x2b, 0x2d, 0x9e, 0xd0, 0x4e, 0x6b, 0xed, - 0xb5, 0x6b, 0x56, 0x8b, 0xed, 0xb6, 0xdc, 0x76, 0xa9, 0x6d, 0xb7, 0xe0, - 0x86, 0xdb, 0xa9, 0x8e, 0x74, 0x8a, 0x6b, 0xee, 0xb9, 0x51, 0x7e, 0x8b, - 0xff, 0xee, 0xba, 0xec, 0xf2, 0xa8, 0x6e, 0xbb, 0xf0, 0x9a, 0xfb, 0x6e, - 0xbc, 0xf4, 0x72, 0x3b, 0x6f, 0xbd, 0xf8, 0x4e, 0x7b, 0x6f, 0xbe, 0xfc, - 0x32, 0xbb, 0x6f, 0xbf, 0x00, 0x0f, 0xfb, 0x6f, 0xc0, 0x04, 0xeb, 0x3a, - 0x70, 0xc1, 0x08, 0x03, 0x4b, 0xae, 0x9f, 0x09, 0x37, 0x1c, 0xed, 0xc1, - 0x0e, 0x47, 0x6c, 0x2a, 0xc4, 0x12, 0x57, 0xfc, 0x29, 0xc5, 0x16, 0x67, - 0x8c, 0x29, 0xc6, 0x1a, 0x77, 0x1c, 0x29, 0xc7, 0x1e, 0x87, 0xac, 0x28, - 0xc8, 0x22, 0x97, 0x2c, 0x28, 0xc9, 0x26, 0xa7, 0x9c, 0x27, 0xca, 0x2a, - 0xb7, 0x6c, 0xe9, 0xc2, 0x88, 0xba, 0x2c, 0x33, 0xa5, 0x2c, 0xcf, 0x6c, - 0x33, 0x99, 0x35, 0xdf, 0xac, 0x33, 0x9f, 0x30, 0xef, 0xec, 0xf3, 0xb3, - 0x3d, 0xff, 0x2c, 0x74, 0xa0, 0x39, 0x0f, 0x6d, 0xb4, 0x93, 0x45, 0x1f, - 0xad, 0xb4, 0x95, 0x41, 0x2f, 0xed, 0x74, 0x9b, 0x49, 0x3f, 0x2d, 0x35, - 0x90, 0x51, 0x4f, 0x6d, 0x35, 0x8e, 0x55, 0x5f, 0x3d, 0x75, 0xd6, 0x5a, - 0x3f, 0xcd, 0x75, 0xd7, 0x4b, 0x7f, 0x0d, 0xf6, 0xd1, 0x62, 0x8f, 0x3d, - 0x74, 0xd9, 0x66, 0xff, 0x8c, 0x76, 0xda, 0x3b, 0xaf, 0xcd, 0xf6, 0xcd, - 0x6e, 0xbf, 0x3d, 0x73, 0xdc, 0x72, 0xbb, 0x4c, 0x77, 0xdd, 0x2a, 0xdf, - 0x8d, 0xb7, 0xc9, 0x7a, 0xef, 0x2d, 0x72, 0xdf, 0x7e, 0x7b, 0x0c, 0x78, - 0xe0, 0x1a, 0x0f, 0x4e, 0xb8, 0xc5, 0x86, 0x1f, 0x2e, 0x71, 0xe2, 0x8a, - 0x3b, 0xcc, 0x78, 0xe3, 0x09, 0x3f, 0x0e, 0x79, 0xc1, 0x92, 0x4f, 0x1e, - 0x70, 0xe5, 0x96, 0xf7, 0x8b, 0x79, 0xe6, 0xf9, 0x6e, 0xce, 0x79, 0xbd, - 0x9e, 0x7f, 0x1e, 0x6f, 0xe8, 0xa2, 0xb7, 0x4b, 0x7a, 0xe9, 0xeb, 0x9e, - 0x8e, 0xfa, 0xb9, 0xaa, 0xaf, 0x2e, 0x6e, 0xeb, 0xae, 0x83, 0x0b, 0x7b, - 0xec, 0xf6, 0x36, 0x4d, 0xff, 0xbb, 0xd6, 0xb3, 0xdf, 0x7e, 0x6d, 0xee, - 0xba, 0xeb, 0x6b, 0x7b, 0xef, 0x52, 0xf3, 0x0e, 0xbc, 0xb3, 0xc2, 0x0f, - 0xef, 0xef, 0xef, 0xc6, 0x2b, 0x5d, 0x7c, 0xf2, 0xc7, 0x2e, 0xcf, 0xbc, - 0xc0, 0xc8, 0x3f, 0x2f, 0xb4, 0xf3, 0xd2, 0xfb, 0x4a, 0x7d, 0xf5, 0x06, - 0x47, 0x8f, 0xbd, 0xce, 0xd7, 0x6f, 0x7f, 0x6b, 0xf7, 0xde, 0x2b, 0x8c, - 0x25, 0xc3, 0xe1, 0xab, 0xad, 0x7d, 0xf9, 0x76, 0x9f, 0x8f, 0x7e, 0xde, - 0xea, 0xaf, 0xcf, 0x77, 0xfb, 0xee, 0xff, 0x0d, 0x7f, 0xfc, 0x82, 0xcf, - 0x4f, 0x7f, 0xe1, 0xf6, 0xdf, 0x8f, 0x78, 0xfe, 0xfa, 0x2f, 0xce, 0x7f, - 0xff, 0x8e, 0xfb, 0x1f, 0x00, 0x23, 0x27, 0xc0, 0x01, 0x52, 0xae, 0x80, - 0x06, 0xbc, 0x1c, 0x02, 0x13, 0xa8, 0xb9, 0x05, 0x32, 0xb0, 0x73, 0x0e, - 0x7c, 0x20, 0xe8, 0x22, 0x28, 0xc1, 0xd1, 0x51, 0xb0, 0x82, 0xa6, 0xbb, - 0x20, 0x06, 0x53, 0xa7, 0xc1, 0x0d, 0xb2, 0xae, 0x83, 0x1e, 0x7c, 0x1d, - 0x08, 0x43, 0x28, 0xbb, 0x11, 0x92, 0xb0, 0x76, 0xe3, 0x8b, 0xd9, 0x09, - 0x09, 0x98, 0xc2, 0x15, 0x46, 0x0c, 0x7c, 0x2e, 0x64, 0x14, 0x0c, 0x63, - 0x38, 0x32, 0x13, 0xd2, 0x50, 0x5a, 0x33, 0xbc, 0x61, 0xaa, 0x6c, 0xa8, - 0xc3, 0x66, 0xe5, 0xb0, 0x87, 0x44, 0xe3, 0x21, 0x10, 0x91, 0xf5, 0xc3, - 0x21, 0xea, 0xa9, 0x88, 0x46, 0xa4, 0x96, 0x10, 0x93, 0x28, 0x2c, 0x24, - 0x32, 0xb1, 0x4e, 0x4e, 0x7c, 0xa2, 0xa1, 0x96, 0x28, 0xc5, 0xec, 0xb5, - 0xb0, 0x8a, 0x16, 0x4c, 0x21, 0x17, 0xb6, 0xc8, 0xc5, 0x2e, 0x7a, 0xf1, - 0x8b, 0x60, 0x0c, 0xa3, 0x18, 0xc7, 0x48, 0xc6, 0x2e, 0x7a, 0x01, 0x0c, - 0x61, 0x48, 0xa3, 0x1a, 0xd7, 0xc8, 0xc6, 0x36, 0xba, 0xf1, 0x8d, 0x70, - 0x8c, 0xa3, 0x1c, 0xe7, 0x48, 0xc7, 0x3a, 0xda, 0xff, 0xf1, 0x8e, 0x78, - 0xcc, 0xa3, 0x1e, 0xf7, 0xc8, 0xc7, 0x3e, 0xfa, 0xf1, 0x8f, 0x80, 0x0c, - 0x64, 0x1d, 0xc7, 0x40, 0x80, 0x00, 0x08, 0x82, 0x10, 0x82, 0x4c, 0xa4, - 0x22, 0x17, 0xc9, 0xc8, 0x46, 0x3a, 0xf2, 0x91, 0x90, 0x8c, 0xa4, 0x24, - 0x13, 0x39, 0x86, 0x02, 0x08, 0x20, 0x00, 0x28, 0x38, 0x85, 0x06, 0x26, - 0xc9, 0xc9, 0x4e, 0x7a, 0xf2, 0x93, 0xa0, 0x0c, 0xa5, 0x28, 0x47, 0xa9, - 0x46, 0x42, 0x5e, 0xb2, 0x21, 0xcb, 0xa8, 0x00, 0x29, 0x57, 0xc9, 0xca, - 0x56, 0xba, 0xf2, 0x95, 0xb0, 0x6c, 0xa4, 0x29, 0x31, 0x99, 0x0c, 0x77, - 0xc4, 0xf2, 0x96, 0xb8, 0xcc, 0xa5, 0x2e, 0x77, 0x19, 0xca, 0x59, 0xba, - 0xe4, 0x01, 0x83, 0xe0, 0xa5, 0x30, 0x87, 0x49, 0xcc, 0x62, 0x1a, 0xf3, - 0x8d, 0xbe, 0x7c, 0xc9, 0x03, 0x48, 0x70, 0xcc, 0x66, 0x3a, 0xf3, 0x99, - 0xd0, 0xec, 0x65, 0x0b, 0x08, 0x70, 0x4a, 0xb1, 0x88, 0x80, 0x04, 0x7d, - 0xc8, 0xa6, 0x36, 0xb7, 0xc9, 0xcd, 0x6e, 0x7a, 0xf3, 0x9b, 0xe0, 0x0c, - 0xa7, 0x38, 0xfb, 0x30, 0x00, 0x02, 0x90, 0xc2, 0x25, 0x22, 0xb8, 0xe6, - 0x38, 0xd7, 0xc9, 0xce, 0x76, 0xba, 0xf3, 0x9d, 0xf0, 0x8c, 0xa7, 0x3c, - 0xc9, 0x50, 0xce, 0x51, 0x60, 0xf2, 0x25, 0xd7, 0x24, 0x80, 0x3e, 0xf7, - 0xc9, 0xcf, 0x7e, 0xfa, 0xf3, 0x9f, 0x00, 0x0d, 0xa8, 0x40, 0x07, 0x4a, - 0xd0, 0x82, 0x1a, 0xf4, 0xa0, 0x08, 0x4d, 0xa8, 0x42, 0x17, 0xca, 0xd0, - 0x86, 0x3a, 0xf4, 0xa1, 0x10, 0x8d, 0xa8, 0x44, 0x27, 0x5a, 0x50, 0x4b, - 0x46, 0x20, 0x05, 0xd6, 0xbc, 0x26, 0x31, 0x36, 0xca, 0xd1, 0x8e, 0x7a, - 0xf4, 0xa3, 0x20, 0x0d, 0xa9, 0x48, 0x47, 0x4a, 0x52, 0x62, 0x08, 0x20, - 0x02, 0xf7, 0x4c, 0xe7, 0x35, 0xcf, 0xc1, 0xd2, 0x96, 0xba, 0xf4, 0xa5, - 0xff, 0x30, 0x8d, 0xa9, 0x4c, 0x67, 0x4a, 0xd3, 0x9a, 0x9a, 0x23, 0x02, - 0x28, 0x65, 0x08, 0x3e, 0xaf, 0x89, 0xd3, 0x9e, 0xfa, 0xf4, 0xa7, 0x40, - 0x0d, 0xaa, 0x50, 0x87, 0x4a, 0xd4, 0xa2, 0x1a, 0xf5, 0xa8, 0x48, 0x4d, - 0xaa, 0x52, 0x97, 0xca, 0xd4, 0xa6, 0x3a, 0xf5, 0xa9, 0x50, 0x8d, 0xaa, - 0x54, 0xa7, 0x4a, 0xd5, 0xaa, 0x26, 0x35, 0x1d, 0x3b, 0x25, 0x81, 0x55, - 0xb7, 0xca, 0xd5, 0xae, 0x7a, 0xf5, 0xab, 0x60, 0x0d, 0xab, 0x58, 0xc7, - 0x4a, 0x56, 0xab, 0xc2, 0x43, 0xa7, 0x8b, 0xd1, 0x6a, 0x59, 0xd7, 0xca, - 0xd6, 0xb6, 0xba, 0xf5, 0xad, 0x70, 0x8d, 0xab, 0x5c, 0x7f, 0x8a, 0x55, - 0xb4, 0x90, 0xc0, 0xa6, 0x78, 0xcd, 0xab, 0x5e, 0xf7, 0xca, 0xd7, 0xbe, - 0xfa, 0xf5, 0xaf, 0xd0, 0xc0, 0x69, 0x29, 0x24, 0x82, 0x02, 0x12, 0x94, - 0xf4, 0xb0, 0x88, 0x4d, 0xac, 0x62, 0x17, 0xcb, 0xd8, 0xc6, 0x3a, 0x76, - 0x15, 0x02, 0x88, 0x2c, 0x04, 0x04, 0x0b, 0x0f, 0x12, 0x14, 0xe0, 0xb2, - 0x98, 0xcd, 0xac, 0x66, 0x37, 0xcb, 0xd9, 0xce, 0x7a, 0xf6, 0xb3, 0xa0, - 0x0d, 0xad, 0x68, 0x47, 0x4b, 0xda, 0xd2, 0x9a, 0xf6, 0xb4, 0xa8, 0x4d, - 0xad, 0x6a, 0x57, 0xcb, 0xda, 0xd6, 0xba, 0xf6, 0xb5, 0xb0, 0x15, 0xad, - 0x2a, 0x24, 0xdb, 0x53, 0x12, 0x50, 0xf4, 0xb6, 0xb8, 0xcd, 0xad, 0x6e, - 0x77, 0xcb, 0xdb, 0xde, 0xfa, 0xf6, 0xb7, 0xc0, 0xc5, 0x6d, 0x01, 0x20, - 0x2b, 0x00, 0x12, 0x84, 0xe2, 0xb8, 0xc8, 0x4d, 0xae, 0x72, 0x97, 0xcb, - 0xdc, 0xe6, 0x3a, 0xf7, 0xb9, 0xd0, 0x45, 0xae, 0x3f, 0xb1, 0x39, 0xcf, - 0xea, 0x5a, 0xf7, 0xba, 0xd8, 0xcd, 0xae, 0x76, 0xbf, 0x39, 0x80, 0xee, - 0x22, 0x82, 0xba, 0xdb, 0x0d, 0xaf, 0x78, 0xc7, 0x4b, 0xde, 0xf2, 0x62, - 0x97, 0x99, 0xd1, 0x4c, 0xff, 0xaf, 0x7a, 0xd7, 0xcb, 0x5e, 0x41, 0xa2, - 0xb7, 0xbd, 0xf0, 0x8d, 0xaf, 0x7c, 0xe7, 0x1b, 0x86, 0xf7, 0xd2, 0xf7, - 0xbe, 0xf8, 0xcd, 0xaf, 0x30, 0xed, 0xab, 0xdf, 0xfe, 0xfa, 0xf7, 0xbf, - 0xa1, 0xe4, 0x2f, 0x80, 0x07, 0x4c, 0xe0, 0x02, 0xbb, 0xd7, 0xc0, 0x08, - 0x4e, 0xb0, 0x82, 0xef, 0x28, 0xe0, 0x05, 0x3b, 0xf8, 0xc1, 0x09, 0x6e, - 0x30, 0x84, 0x27, 0x4c, 0x61, 0xfd, 0x4a, 0xb8, 0xc2, 0x18, 0xce, 0x30, - 0x7b, 0x2f, 0xac, 0xe1, 0x0e, 0x7b, 0xd8, 0x98, 0x1c, 0xfe, 0xb0, 0x88, - 0x47, 0x7c, 0xcb, 0x10, 0x93, 0xf8, 0xc4, 0x28, 0x16, 0xa5, 0x89, 0x53, - 0xcc, 0xe2, 0x16, 0x43, 0x72, 0xc5, 0x2e, 0x8e, 0xb1, 0x8c, 0x01, 0x09, - 0xe3, 0x19, 0xdb, 0xf8, 0xc6, 0x76, 0xac, 0x31, 0x8e, 0x77, 0xcc, 0x63, - 0x36, 0xea, 0xb8, 0xc7, 0x40, 0xde, 0xf1, 0x8f, 0x83, 0x4c, 0x64, 0x19, - 0x0f, 0xb9, 0xc8, 0x48, 0x4e, 0xf1, 0x91, 0x93, 0xcc, 0x64, 0x11, 0x2f, - 0xb9, 0xc9, 0x50, 0xce, 0xf0, 0x93, 0xa3, 0x4c, 0x65, 0x08, 0x4f, 0xb9, - 0xca, 0x58, 0x8e, 0x70, 0x96, 0xb7, 0x7c, 0xe2, 0x2b, 0x73, 0xf9, 0xcb, - 0xfd, 0xf5, 0x32, 0x98, 0xc7, 0x4c, 0x5f, 0x31, 0x93, 0xf9, 0xcc, 0xed, - 0x35, 0x33, 0x9a, 0xd7, 0x1c, 0x4d, 0x35, 0xb3, 0xf9, 0xcd, 0xc7, 0x74, - 0x33, 0x9c, 0xe7, 0xbc, 0x5f, 0x3a, 0xdb, 0xd9, 0xc2, 0x77, 0xce, 0x73, - 0x99, 0xf5, 0xcc, 0x67, 0xf8, 0xca, 0xb9, 0xcf, 0x80, 0x0e, 0x70, 0xa0, - 0x07, 0xfd, 0xcc, 0x3f, 0x13, 0xfa, 0xd0, 0x2f, 0x46, 0xb4, 0xa2, 0xeb, - 0xbc, 0xe8, 0x46, 0xe3, 0xd2, 0xd0, 0x8e, 0x8e, 0x74, 0x1f, 0x21, 0x2d, - 0xe9, 0x4a, 0xe3, 0x91, 0xd2, 0x96, 0xce, 0xf4, 0x1c, 0x31, 0xad, 0xe9, - 0x4e, 0xbb, 0x91, 0xd3, 0x9e, 0x0e, 0x75, 0x1a, 0xff, 0x41, 0x2d, 0xea, - 0x50, 0x93, 0xba, 0xd4, 0x9d, 0x3e, 0x35, 0xaa, 0x33, 0xad, 0xea, 0x55, - 0x57, 0xba, 0xd5, 0xae, 0x8e, 0x34, 0xac, 0x63, 0xdd, 0xe8, 0x59, 0xd3, - 0x5a, 0xd1, 0xb6, 0xbe, 0xf5, 0xa1, 0x73, 0xad, 0xeb, 0x41, 0xf3, 0xba, - 0xd7, 0x80, 0xfe, 0x35, 0xb0, 0xf9, 0x2c, 0xec, 0x61, 0xe7, 0xb9, 0xd8, - 0xc6, 0xb6, 0x33, 0xb2, 0x93, 0x3d, 0xe7, 0x65, 0x33, 0xfb, 0xcd, 0xce, - 0x7e, 0xf6, 0x9a, 0xa3, 0x2d, 0xed, 0x33, 0x53, 0xbb, 0xda, 0x63, 0xbe, - 0x36, 0xb6, 0xbf, 0xac, 0xed, 0x6d, 0x6f, 0xb9, 0xdb, 0xde, 0xc6, 0x32, - 0xb8, 0xc3, 0x4d, 0xe5, 0x71, 0x93, 0x1b, 0xca, 0xe6, 0x3e, 0x37, 0x93, - 0xd3, 0xad, 0x6e, 0x24, 0xb3, 0xbb, 0xdd, 0x44, 0x7e, 0x37, 0xbc, 0x81, - 0x2c, 0xef, 0x79, 0xf3, 0xb8, 0xde, 0xf6, 0xc6, 0x31, 0xbe, 0xf3, 0x6d, - 0xe3, 0x7d, 0xf3, 0xdb, 0xc8, 0xff, 0x76, 0xb5, 0xbf, 0x03, 0xde, 0xe2, - 0x81, 0x13, 0x5c, 0xc9, 0x07, 0x2f, 0xb5, 0xc1, 0x13, 0x4e, 0xe2, 0x85, - 0x33, 0xdc, 0xc9, 0x0f, 0xf7, 0xb4, 0xc3, 0x23, 0xde, 0xe1, 0x89, 0x53, - 0x5c, 0xca, 0x17, 0x67, 0x75, 0xc6, 0x2d, 0x6d, 0xf1, 0x8d, 0x4f, 0xb8, - 0xe3, 0x1e, 0x7f, 0x30, 0xc8, 0x43, 0xbe, 0xe0, 0x91, 0x93, 0x5c, 0xcb, - 0x27, 0x5f, 0xb4, 0xc9, 0x53, 0x5e, 0xe0, 0x95, 0xb3, 0x7c, 0xc0, 0x2e, - 0x7f, 0xf9, 0x7f, 0x63, 0x2e, 0xf3, 0x30, 0xd7, 0x9c, 0xd0, 0x34, 0xbf, - 0x39, 0x7e, 0x73, 0xae, 0xf3, 0x3d, 0xf7, 0xbc, 0xcf, 0x3c, 0xff, 0x79, - 0x7c, 0x83, 0x2e, 0xf4, 0x34, 0x17, 0x5d, 0xcf, 0x44, 0x3f, 0xba, 0x7a, - 0x93, 0xae, 0xf4, 0x36, 0x37, 0x5d, 0xd9, 0x4f, 0xa7, 0x33, 0xd3, 0xa3, - 0xde, 0xcc, 0xa9, 0x53, 0x1d, 0xc4, 0x57, 0x87, 0x76, 0xd6, 0xd9, 0x6c, - 0x3e, 0xf5, 0xad, 0x33, 0xda, 0xeb, 0x64, 0xee, 0x3a, 0xd8, 0x75, 0x29, - 0xf6, 0xb1, 0x3f, 0xda, 0xec, 0xd9, 0x46, 0x3b, 0x98, 0xcb, 0xae, 0xf6, - 0x57, 0xb2, 0xbd, 0xed, 0xad, 0x7c, 0x3b, 0xdc, 0x57, 0x29, 0xf7, 0xb9, - 0x8f, 0xb2, 0xee, 0x76, 0x17, 0x74, 0xde, 0xcb, 0xbd, 0x77, 0xbe, 0xf7, - 0x1d, 0xdd, 0x7f, 0x07, 0x7c, 0xe0, 0xd7, 0x3d, 0x78, 0xc2, 0x17, 0xde, - 0xdd, 0x41, 0x00, 0x00, 0x3b + +static unsigned char doxygen_png[3224] = +{ + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,255,255,255,255,255,255,255,255, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 91, 91, 91, 32, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,255,255,255,255, 32, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,253,253,253,253, 32, 32,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,255,255,255,255,255,255,255,255, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,251,251,251,251, 32, 32,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,255,255,255,255,255,255,255,255, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,249,249,249,249, 32, 32,249,249,249,249, 32, 32, 32, 32, 32, 32,249,249,249,249, 32, 32, 32, 32, 32, 32,249,249,249,249, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,249,249,249, 32, 32, 32, 32, 32,249,249,249,249, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,249,249,249,249,249,249, 32, 32, 32, 32, 32, 32, 32,249,249,249,249,249, 32, 32, 32, 32, 32,249, 32, 32, 32, 32, 32,255,255,255, + 32, 32, 32, 32, 46,132,190,190,147, 61,247,247,247,247, 32, 32,247,247, 32, 32,118,161,190,190,161,118, 32, 32,247, 32, 46, 89, 89, 89, 89, 46, 32,247,247, 32, 89, 89, 89, 89, 61, 89, 89, 89, 89, 46, 32,247, 32, 46, 89, 89, 89, 89, 32,247, 32, 32,118,175,190,161, 89, 61, 89, 89, 89, 61, 32,247,247,247, 32, 32,104,147,190,190,190,132, 89, 32, 32,247,247, 32, 46, 89, 89, 89, 75, 32, 89,161,190,161, 75, 32,255,255, + 32, 32, 32, 74,230,244,244,244,244,244,244,244,244,244, 32, 32,244, 32, 74,216,244,244,244,244,244,244,216, 74, 32,244, 32,187,244,244,244,159, 32,244, 32,117,244,244,244,230, 46,173,244,244,244,131, 32,244, 32,131,244,244,244,173, 32, 32, 46,173,244,244,244,244,244,230,244,244,244,131, 32,244,244, 32, 74,202,244,244,244,244,244,244,244,173, 46, 32,244, 32, 89,244,244,244,187,145,244,244,244,244,244, 89, 32,255, + 32, 32, 46,213,241,241,241,241,241,241,241,241,241,241, 32, 32, 32, 60,227,241,241,241,241,241,241,241,241,227, 60, 32, 32, 46,227,241,241,241,102, 32, 60,227,241,241,241, 88, 32,116,241,241,241,199, 32,241, 32,185,241,241,241,116, 32, 32,143,241,241,241,241,241,241,241,241,241,241,130, 32,241, 32, 74,227,241,241,241,199,185,241,241,241,241,171, 32,241, 32, 88,241,241,241,241,241,241,241,241,241,241,199, 32,255, + 32, 32,128,237,237,237,223,128, 87,128,237,237,237,237, 32, 32, 32,182,237,237,237,196,100,100,196,237,237,237,182, 32,237, 32,100,237,237,237,223, 59,196,237,237,237,141, 32, 32, 46,237,237,237,237, 59, 32, 46,237,237,237,237, 46, 32, 59,237,237,237,237,169, 87, 87,182,237,237,237,128, 32,237, 32,196,237,237,237, 87, 32, 32, 73,223,237,237,237, 73, 32, 32, 87,237,237,237,237,223,182,223,237,237,237,237, 46, 32, + 32, 32,207,234,234,234,113, 32, 32, 32,234,234,234,234, 32, 32, 59,234,234,234,221, 45, 32, 32, 45,221,234,234,234, 59, 32,234, 32,140,234,234,234,221,234,234,234,194, 32, 32,234, 32,167,234,234,234,126, 32, 99,234,234,234,167, 32, 32,126,234,234,234,180, 32, 32, 32,126,234,234,234,126, 32, 32, 99,234,234,234,167, 32, 32, 32, 32,153,234,234,234,126, 32, 32, 86,234,234,234,207, 45, 32, 45,234,234,234,234, 86, 32, + 32, 45,231,231,231,218, 32, 32, 32, 32,231,231,231,231, 32, 32, 98,231,231,231,165, 32,231,231, 32,165,231,231,231, 98, 32,231, 32, 45,191,231,231,231,231,231,218, 72, 32,231,231, 32, 98,231,231,231,165, 32,151,231,231,231,112, 32, 32,165,231,231,231,112, 32,231, 32,125,231,231,231,125, 32, 32,138,231,231,231,178,125,125,125,125,178,231,231,231,178, 32, 32, 85,231,231,231,178, 32,255, 32,191,231,231,231, 85, 32, + 32, 84,227,227,227,175, 32, 32, 32, 32,227,227,227,227, 32, 32,123,227,227,227,123, 32,227,227, 32,123,227,227,227,123, 32,227,227, 32, 71,227,227,227,227,227,123, 32,227,227,227,227, 32,214,227,227,227, 45,201,227,227,227, 45, 32, 32,175,227,227,227, 84, 32,227, 32,123,227,227,227,123, 32, 32,175,227,227,227,227,227,227,227,227,227,227,227,227,175, 32, 32, 84,227,227,227,175, 32,255, 32,175,227,227,227, 84, 32, + 32, 83,223,223,223,172, 32, 32, 32, 32,223,223,223,223, 32, 32,121,223,223,223,121, 32,223,223, 32,121,223,223,223,121, 32,223,223,223, 32,172,223,223,223,210, 45, 32,223,223,223,223, 32,147,223,223,223,134,223,223,223,147, 32,223, 32,172,223,223,223, 83, 32,223, 32,121,223,223,223,121, 32, 32,172,223,223,223,223,223,223,223,223,223,223,223,223,172, 32, 32, 83,223,223,223,172, 32,255, 32,172,223,223,223, 83, 32, + 32, 82,220,220,220,170, 32, 32, 32, 32,220,220,220,220, 32, 32,120,220,220,220,120, 32,220,220, 32,120,220,220,220,120, 32,220,220, 32, 95,220,220,220,220,220,132, 32,220,220,220,220, 32, 95,220,220,220,207,220,220,220, 95, 32,220, 32,170,220,220,220,107, 32,220, 32,120,220,220,220,120, 32, 32,170,220,220,220,132, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 82,220,220,220,170, 32,255, 32,170,220,220,220, 82, 32, + 32, 57,216,216,216,216, 32, 32, 32, 32,216,216,216,216, 32, 32, 81,216,216,216,167, 32,216,216, 32,155,216,216,216, 81, 32,216, 32, 57,204,216,216,216,216,216,216, 93, 32,216,216,216,216, 32,204,216,216,216,216,216,204, 32,216,216, 32,118,216,216,216,167, 32, 32, 32,130,216,216,216,118, 32, 32,118,216,216,216,191, 32, 32,216,216,216, 32, 32, 44, 57, 32, 32, 81,216,216,216,167, 32,255, 32,167,216,216,216, 81, 32, + 32, 32,189,213,213,213,116, 32, 32, 80,213,213,213,213, 32, 32, 44,201,213,213,213, 68, 32, 32, 68,213,213,213,213, 44, 32, 32, 32,165,213,213,213,165,213,213,213,201, 44, 32,213,213,213, 32,129,213,213,213,213,213,141, 32,213,213, 32, 80,213,213,213,213,165,116,153,213,213,213,213,116, 32, 32, 56,213,213,213,213,153, 56, 32, 32, 32, 44,104,189,116, 32, 32, 80,213,213,213,165, 32,255, 32,165,213,213,213, 80, 32, + 32, 32,139,210,210,210,210,174,174,210,210,210,210,210, 32, 32, 32,127,210,210,210,198,127,127,198,210,210,210,127, 32,210, 32,115,210,210,210,174, 44,139,210,210,210,163, 32, 32,210,210, 32, 68,210,210,210,210,210, 91, 32,210,210,210, 32,174,210,210,210,210,210,210,210,210,210,210,115, 32,210, 32,127,210,210,210,210,210,174,163,163,210,210,210,115, 32, 32, 79,210,210,210,163, 32,255, 32,163,210,210,210, 79, 32, + 32, 32, 55,194,206,206,206,206,206,194,206,206,206,206, 32, 32, 32, 44,171,206,206,206,206,206,206,206,206,171, 44, 32, 32, 67,206,206,206,206, 67, 32, 44,183,206,206,206,113, 32,206,206,206, 32,183,206,206,206,194, 32,206,206,206,206, 32, 67,194,206,206,206,206,206,171,206,206,206,113, 32,206, 32, 32,136,206,206,206,206,206,206,206,206,206,206,113, 32, 32, 78,206,206,206,160, 32,255, 32,160,206,206,206, 78, 32, + 32, 32, 32,100,192,203,203,203,157, 55,203,203,203,203, 32, 32,203, 32, 43,135,203,203,203,203,203,203,135, 43, 32, 32, 43,180,203,203,203,112, 32,203, 32, 66,203,203,203,203, 66, 32,203,203, 32,157,203,203,203,135, 32,203,203,203,203,203, 32, 43,112,157,157,123, 55,112,203,203,203,112, 32,203,203, 32, 32, 78,146,203,203,203,203,203,203,169,123, 55, 32, 32, 78,203,203,203,157, 32,255, 32,157,203,203,203, 78, 32, + 32, 32, 32, 32, 54,110,110, 88, 32, 32, 32, 32, 32, 32, 32, 32,200,200, 32, 32, 54, 99,110,110, 99, 54, 32, 32,200,200, 32, 32, 32, 32, 32, 32, 32,200,200, 32, 32, 32, 32, 32, 32,200,200, 32, 54,200,200,200,200, 77, 32,200,200,200,200,200, 32, 32, 32, 32, 32, 32, 32,166,200,200,200, 88, 32,200,200,200,200, 32, 32, 32, 66, 77, 77, 77, 32, 32, 32, 32,200,200, 32, 32, 32, 32, 32, 32,255, 32, 32, 32, 32, 32, 32,255, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,198,198,198,198, 32, 32, 32, 32, 32, 32,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, 32,109,198,198,198,176, 32,198,198,198,198,198, 32, 98,121, 76, 32, 32, 54,109,198,198,198,198, 43, 32,198,198,198,198,198,198,198, 32, 32, 32, 32,198,198,198,198,198,198,198,198,198,198,198,198,255,255,255,255,255,255,255,255, + 32, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 33,159,191,191,191,117, 36, 41, 41, 41, 41, 41, 34,108,191,191,191,191,191,191,191,191,191,117, 36, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,255, + 32, 41, 97,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 78, 38, 64,190,192,192,192, 66, 66, 41, 41, 85,128, 65, 34,107,190,192,192,192,192,192,192,192,139, 48, 39, 41, 41,105,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 97, 41,255, + 32, 41, 97,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 96, 36, 95,147,148,148,139, 55, 41, 41, 85,121,128, 91, 38, 75,137,158,190,190,190,170,139, 97, 49, 37, 41, 41,105,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 97, 41,255, + 32, 41, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 41, 36, 45, 45, 45, 48, 38, 41, 41, 76, 76, 76, 76, 76, 37, 34, 42, 33, 33, 33, 39, 48, 59, 41, 41, 41, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 41,255, + 32, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 }; -static unsigned int tab_r_gif_len = 2585; -static unsigned char search_sel_png[] = { +static unsigned char doxygen_a_png[3224] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,145,247,247,247,247,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,247,247,247,247,247,247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,247,247,247,247,247,247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,247,247,247,247,247,247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16,115,181,181,132,247,247,247,247,247,247, 0, 0, 0, 0, 0, 99,148,181,181,148, 99, 0, 0, 0, 0, 16, 66, 66, 66, 66, 16, 0, 0, 0, 0, 66, 66, 66, 66, 33, 66, 66, 66, 66, 16, 0, 0, 0, 16, 66, 66, 66, 66, 0, 0, 0, 0, 99,165,181,148, 66, 33, 66, 66, 66, 33, 0, 0, 0, 0, 0, 0, 82,132,181,181,181,115, 66, 0, 0, 0, 0, 0, 16, 66, 66, 66, 49, 0, 66,148,181,148, 49, 0, 0, 0, + 0, 0, 0,129,247,247,247,247,247,247,247,247,247,247,247, 0, 0, 0,112,214,247,247,247,247,247,247,214,112, 0, 16,247,247,247,247,247,247, 46, 0, 0,145,247,247,247,247,247,247,247,247,247,247, 16, 0, 16,247,247,247,247,247, 66, 0, 63,165,247,247,247,247,247,247,247,247,247,247, 33, 0, 0, 0, 96,198,247,247,247,247,247,247,247,165, 63, 0, 0, 16,247,247,247,247,247,145,247,247,247,247,247,145, 0, 0, + 0, 0,112,247,247,247,247,247,247,247,247,247,247,247,247, 0, 0,129,247,247,247,247,247,247,247,247,247,247,129, 0,181,247,247,247,247,247,148, 0,129,247,247,247,247,247,247,247,247,247,247,247,115, 0,115,247,247,247,247,247,165, 30,247,247,247,247,247,247,247,247,247,247,247,247,115, 0, 0,129,247,247,247,247,247,247,247,247,247,247,247, 63, 0, 66,247,247,247,247,247,247,247,247,247,247,247,247, 96, 0, + 0, 16,247,247,247,247,247,247,247,247,247,247,247,247,247, 0, 79,247,247,247,247,247,247,247,247,247,247,247,247, 79, 79,247,247,247,247,247,247,129,247,247,247,247,247,247,129,247,247,247,247,247,198, 0,181,247,247,247,247,247, 99,145,247,247,247,247,247,247,247,247,247,247,247,247,115, 0, 96,247,247,247,247,247,247,247,247,247,247,247,247,165, 0, 66,247,247,247,247,247,247,247,247,247,247,247,247,198, 0, + 0,115,247,247,247,247,247,247,247,247,247,247,247,247,247, 0,181,247,247,247,247,247,247,247,247,247,247,247,247,181, 0,129,247,247,247,247,247,247,247,247,247,247,247,145, 16,247,247,247,247,247,247, 33,247,247,247,247,247,247, 33,247,247,247,247,247,247,247,247,247,247,247,247,247,115, 0,198,247,247,247,247,247,198,181,247,247,247,247,247,247, 49, 66,247,247,247,247,247,247,247,247,247,247,247,247,247, 16, + 0,214,247,247,247,247,247,129, 66,247,247,247,247,247,247, 33,247,247,247,247,247,247, 96, 96,247,247,247,247,247,247, 33, 0,145,247,247,247,247,247,247,247,247,247,198, 30, 0,165,247,247,247,247,247,115,247,247,247,247,247,165,115,247,247,247,247,247,181, 66,115,247,247,247,247,247,115, 82,247,247,247,247,247,165,115,115,148,247,247,247,247,247,115, 66,247,247,247,247,247,247,181,247,247,247,247,247,247, 66, + 16,247,247,247,247,247,231, 0, 0,247,247,247,247,247,247, 82,247,247,247,247,247,165, 0, 0,165,247,247,247,247,247, 82, 0, 30,247,247,247,247,247,247,247,247,247, 96, 0, 0, 82,247,247,247,247,247,165,247,247,247,247,247, 99,165,247,247,247,247,247, 99, 0,115,247,247,247,247,247,115,132,247,247,247,247,247,247,247,247,247,247,247,247,247,247,181, 66,247,247,247,247,247,181, 0,198,247,247,247,247,247, 66, + 66,247,247,247,247,247,181, 0, 0,247,247,247,247,247,247,115,247,247,247,247,247,115, 0, 0,115,247,247,247,247,247,115, 0, 0, 96,247,247,247,247,247,247,247,129, 0, 0, 0, 0,231,247,247,247,247,247,247,247,247,247,247, 16,181,247,247,247,247,247, 66, 0,115,247,247,247,247,247,115,181,247,247,247,247,247,247,247,247,247,247,247,247,247,247,181, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66, + 66,247,247,247,247,247,181, 0, 0,247,247,247,247,247,247,115,247,247,247,247,247,115, 0, 0,115,247,247,247,247,247,115, 0, 0, 0,181,247,247,247,247,247,247, 30, 0, 0, 0, 0,148,247,247,247,247,247,247,247,247,247,148, 0,181,247,247,247,247,247, 66, 0,115,247,247,247,247,247,115,181,247,247,247,247,247,247,247,247,247,247,247,247,247,247,181, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66, + 66,247,247,247,247,247,181, 0, 0,247,247,247,247,247,247,115,247,247,247,247,247,115, 0, 0,115,247,247,247,247,247,115, 0, 0,129,247,247,247,247,247,247,247,145, 0, 0, 0, 0, 82,247,247,247,247,247,247,247,247,247, 82, 0,181,247,247,247,247,247, 99, 0,115,247,247,247,247,247,115,181,247,247,247,247,247,247,247,247,247,247,247,247,247,181, 79, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66, + 33,247,247,247,247,247,247, 14, 0,247,247,247,247,247,247, 66,247,247,247,247,247,181, 0, 0,165,247,247,247,247,247, 66, 0, 79,247,247,247,247,247,247,247,247,247,129, 0, 0, 0, 0,231,247,247,247,247,247,247,247,231, 0, 0,115,247,247,247,247,247,181,115,165,247,247,247,247,247,115,115,247,247,247,247,247,214, 63, 0, 0, 0, 16,112,247,247, 33, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66, + 0,214,247,247,247,247,247,198,198,247,247,247,247,247,247, 16,247,247,247,247,247,247,132,132,247,247,247,247,247,247, 16, 14,181,247,247,247,247,247,247,247,247,247,247, 79, 0, 0, 0,132,247,247,247,247,247,247,247,148, 0, 0, 66,247,247,247,247,247,247,247,247,247,247,247,247,247,115, 33,247,247,247,247,247,247,247,198,181,181,247,247,247,247,115, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66, + 0,148,247,247,247,247,247,247,247,247,247,247,247,247,247, 0,132,247,247,247,247,247,247,247,247,247,247,247,247,145, 0,145,247,247,247,247,247,247,247,247,247,247,247,181, 14, 0, 0, 49,247,247,247,247,247,247,247, 82, 0, 0, 0,198,247,247,247,247,247,247,247,247,247,247,247,247,115, 0,145,247,247,247,247,247,247,247,247,247,247,247,247,247,115, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66, + 0, 46,247,247,247,247,247,247,247,247,247,247,247,247,247, 0, 30,247,247,247,247,247,247,247,247,247,247,247,247, 30,112,247,247,247,247,247,247, 96,247,247,247,247,247,247,145, 0, 0, 0,214,247,247,247,247,247,231, 0, 0, 0, 0, 96,247,247,247,247,247,247,247,247,247,247,247,247,115, 0, 30,148,247,247,247,247,247,247,247,247,247,247,247,247,115, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66, + 0, 0,129,247,247,247,247,247,247,247,247,247,247,247,247, 0, 0, 96,247,247,247,247,247,247,247,247,247,247, 96, 16,247,247,247,247,247,247,145, 0,112,247,247,247,247,247,247, 49, 0, 0,181,247,247,247,247,247,148, 0, 0, 0, 0, 0,129,247,247,247,247,247,247,247,247,247,247,247,115, 0, 0, 46,148,247,247,247,247,247,247,247,247,247,247,247, 33, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66, + 0, 0, 0,129,247,247,247,247,181,145,247,247,247,247,145, 0, 0, 0, 46,148,247,247,247,247,247,247,148, 46, 0, 0,112,214,247,247,247,145, 14, 0, 0,145,247,247,247,247,145, 0, 0, 33,247,247,247,247,247,247, 66, 0, 0, 0, 0, 0, 99,132,115,181,181,132,198,247,247,247,247,247, 82, 0, 0, 0, 0, 66,165,247,247,247,247,247,247,198,132, 33, 0, 0,145,247,247,247,181, 79, 0, 79,181,247,247,247,145, 0, + 0, 0, 0, 0, 33,115,115, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 99,115,115, 99, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,247,247,247,247,247,214, 0, 0, 0, 0, 0, 99,247,247,247,247,247,247,247,247,247,247,247,247, 16, 0, 0, 0, 0, 0, 0, 0, 49, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,165,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,108,224,255,255,255,255,255,255,101,164,255,255,255,143,250,255,255,255,255,255,255,255,255,255,255,255, 98,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165, 0, + 0,165,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,136,251,255,255,255,255,255,255,101,130,255,255,255,153,250,255,255,255,255,255,255,255,255,255,255,121, 98,189,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165, 0, + 0,165,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,198,252,255,255,255,255,255,164,164,255,255,255,255,176,249,251,255,255,255,255,255,255,255,255,150, 86,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165, 0, + 0,165,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,164,198,255,255,255,255,201,133,164,255,255,255,255,255,145,203,255,255,255,255,255,255,255,117, 79,194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165, 0, + 0, 66,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 73, 73,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 47, 70,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 66, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +unsigned char mag_sel_png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, - 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x10, - 0x08, 0x02, 0x00, 0x00, 0x00, 0x99, 0x7a, 0xc8, 0x4c, 0x00, 0x00, 0x01, - 0xd6, 0x49, 0x44, 0x41, 0x54, 0x28, 0x15, 0x8d, 0x92, 0xbb, 0xae, 0x41, - 0x51, 0x10, 0x86, 0xcf, 0x66, 0x0b, 0x22, 0x44, 0x23, 0x4a, 0xb7, 0xd0, - 0x11, 0x09, 0x71, 0x49, 0xbc, 0x82, 0xc2, 0x2b, 0xa0, 0xd6, 0x29, 0x74, - 0x1e, 0x42, 0xeb, 0x11, 0x44, 0x41, 0x43, 0x45, 0x27, 0x48, 0x08, 0x91, - 0x10, 0x51, 0xba, 0x14, 0x42, 0x21, 0x91, 0x10, 0x97, 0xf3, 0xb1, 0x9c, - 0x9d, 0x13, 0x97, 0x93, 0x33, 0xc5, 0xda, 0xb3, 0x66, 0xfe, 0xff, 0x9f, - 0x59, 0x33, 0x5b, 0xba, 0x5e, 0xaf, 0x5f, 0x77, 0xbb, 0x5c, 0x2e, 0xd2, - 0xdd, 0xc4, 0xf5, 0x3f, 0xa7, 0xac, 0x30, 0x3b, 0x9d, 0x4e, 0xbf, 0xdf, - 0x9f, 0x4e, 0xa7, 0x44, 0xdc, 0x6e, 0xb7, 0xdf, 0xef, 0x0f, 0x87, 0xc3, - 0x7f, 0x4b, 0x48, 0xa7, 0xd3, 0x89, 0x7a, 0xd5, 0x6a, 0xb5, 0x5c, 0x2e, - 0x9f, 0xcf, 0x67, 0xea, 0x43, 0x50, 0xa9, 0x54, 0x6a, 0xb5, 0x3a, 0x91, - 0x48, 0xc4, 0xe3, 0x71, 0xb2, 0x9f, 0x24, 0x64, 0x70, 0xad, 0x56, 0xab, - 0x54, 0x2a, 0x19, 0x0c, 0x86, 0x50, 0x28, 0xe4, 0xf5, 0x7a, 0x81, 0x0e, - 0x87, 0xc3, 0x76, 0xbb, 0x4d, 0xd0, 0x62, 0xb1, 0x44, 0xa3, 0xd1, 0x8f, - 0x64, 0x12, 0xdd, 0x6e, 0x97, 0xfa, 0x91, 0x48, 0x84, 0x3a, 0x5a, 0xad, - 0x96, 0x52, 0x4e, 0xa7, 0x13, 0xd1, 0x5a, 0xad, 0x46, 0x8a, 0xe6, 0xf1, - 0xdf, 0xf2, 0x55, 0x0c, 0x6c, 0x32, 0x99, 0x70, 0x52, 0xd6, 0x68, 0x34, - 0xea, 0xf5, 0x7a, 0x9d, 0x4e, 0x87, 0xc3, 0x55, 0xa4, 0xde, 0xd2, 0x44, - 0x50, 0x06, 0x21, 0xde, 0x49, 0x4d, 0x59, 0x7e, 0xcc, 0x8f, 0x07, 0x23, - 0x01, 0x82, 0x14, 0x36, 0x1a, 0x8d, 0x8a, 0xc5, 0xe2, 0x6f, 0x95, 0x54, - 0x2a, 0xc5, 0x03, 0x6f, 0xfd, 0xd0, 0x24, 0x67, 0xaf, 0xd7, 0x43, 0x48, - 0x41, 0x70, 0xc5, 0x77, 0xb9, 0x5c, 0x9c, 0xe0, 0x40, 0x2b, 0xd9, 0x64, - 0x32, 0x29, 0x46, 0x73, 0x23, 0xfb, 0x7c, 0x3e, 0xce, 0x66, 0xb3, 0x59, - 0xa9, 0x54, 0x56, 0xab, 0xd5, 0x72, 0xb9, 0xc4, 0x69, 0x34, 0x1a, 0x04, - 0xd9, 0x99, 0x98, 0x36, 0xe8, 0x74, 0x3a, 0x4d, 0x04, 0xa6, 0xc0, 0xe3, - 0x4b, 0x74, 0xb5, 0xdb, 0xed, 0xd8, 0x53, 0xbd, 0x5e, 0xa7, 0x6d, 0x1a, - 0x26, 0xca, 0xce, 0x18, 0x21, 0xa5, 0x6c, 0x36, 0x5b, 0x2e, 0x97, 0x33, - 0x99, 0x4c, 0x04, 0xb1, 0xc1, 0x60, 0xa0, 0x30, 0xb9, 0xaa, 0xf3, 0xf9, - 0x3c, 0x1c, 0xbb, 0xdd, 0x6e, 0x36, 0x9b, 0x41, 0x23, 0x04, 0xdf, 0xe3, - 0xf1, 0xb0, 0xa1, 0xed, 0x76, 0x4b, 0x17, 0xe3, 0xf1, 0x38, 0x18, 0x0c, - 0x32, 0x11, 0xd0, 0x56, 0xab, 0xf5, 0xa6, 0xf1, 0x63, 0x92, 0x78, 0x09, - 0x75, 0xf6, 0xfb, 0xfd, 0xe1, 0x70, 0x10, 0x05, 0x35, 0x1a, 0x0d, 0x8a, - 0x9b, 0xcd, 0xa6, 0x50, 0x28, 0xac, 0xd7, 0x6b, 0x87, 0xc3, 0x91, 0xcd, - 0x66, 0x59, 0xc1, 0x0f, 0xeb, 0xf1, 0xbd, 0xb5, 0x2d, 0x5e, 0x85, 0x0a, - 0xa6, 0x5c, 0x09, 0xa2, 0xb5, 0x58, 0x2c, 0xe0, 0xa3, 0x92, 0xc9, 0x64, - 0x02, 0x81, 0xc0, 0x33, 0x59, 0x70, 0x04, 0xff, 0x29, 0x47, 0x0a, 0xfe, - 0x7c, 0x3e, 0x9f, 0xcd, 0x66, 0xb1, 0x58, 0x8c, 0x5f, 0xe0, 0x09, 0xf6, - 0x68, 0x1b, 0xdc, 0x53, 0x42, 0x08, 0x11, 0x3f, 0x1e, 0x8f, 0xcc, 0x8f, - 0xb5, 0xbf, 0xfe, 0x67, 0x0f, 0x32, 0xd0, 0xdf, 0x0d, 0xbf, 0xb6, 0xf0, - 0x56, 0xfa, 0x1b, 0x21, 0x36, 0x05, 0xd3, 0x4d, 0xe6, 0x17, 0x7f, 0x00, + 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, + 0x08, 0x06, 0x00, 0x00, 0x00, 0x90, 0x8c, 0x2d, 0xb5, 0x00, 0x00, 0x00, + 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b, + 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48, + 0x52, 0x4d, 0x00, 0x00, 0x6d, 0x98, 0x00, 0x00, 0x73, 0x8e, 0x00, 0x00, + 0xe0, 0x38, 0x00, 0x00, 0x82, 0xd5, 0x00, 0x00, 0x7a, 0x07, 0x00, 0x00, + 0xca, 0xb4, 0x00, 0x00, 0x33, 0x44, 0x00, 0x00, 0x1c, 0x76, 0x84, 0x36, + 0x2a, 0xbd, 0x00, 0x00, 0x01, 0xb9, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, + 0xe4, 0x94, 0xbb, 0x8a, 0x22, 0x41, 0x14, 0x86, 0xbf, 0xda, 0x16, 0x3a, + 0x10, 0xba, 0x03, 0x2f, 0x78, 0x03, 0x51, 0x11, 0x4c, 0xd4, 0x40, 0xd4, + 0x37, 0x30, 0x31, 0x30, 0xe9, 0x07, 0xf0, 0x15, 0x14, 0x7c, 0x1e, 0x31, + 0x37, 0x33, 0x11, 0x73, 0xe9, 0x56, 0x44, 0x84, 0x36, 0xe9, 0x40, 0x50, + 0x54, 0x14, 0xc4, 0xc0, 0xa8, 0x6d, 0x50, 0x6a, 0x92, 0x1d, 0xd9, 0x9d, + 0x99, 0x75, 0x0d, 0x26, 0x58, 0xd8, 0x3f, 0xaa, 0xe2, 0xfc, 0xf5, 0xd5, + 0x39, 0x9c, 0x53, 0x25, 0xa4, 0x94, 0x7c, 0xa7, 0x7e, 0xf0, 0xcd, 0xfa, + 0xf7, 0x81, 0xbe, 0xf7, 0xc5, 0xf9, 0x7c, 0x96, 0x93, 0xc9, 0x84, 0xe5, + 0x72, 0xc9, 0x66, 0xb3, 0x21, 0x99, 0x4c, 0x92, 0xcf, 0xe7, 0xa9, 0x54, + 0x2a, 0x04, 0x02, 0x01, 0xf1, 0x2a, 0x50, 0x48, 0x29, 0x39, 0x9d, 0x4e, + 0x72, 0x30, 0x18, 0x60, 0x59, 0xd6, 0x27, 0x43, 0xb5, 0x5a, 0xa5, 0xd1, + 0x68, 0x10, 0x0c, 0x06, 0xc5, 0xcb, 0x19, 0x4e, 0xa7, 0x53, 0x2c, 0xcb, + 0x22, 0x95, 0x4a, 0x51, 0x2a, 0x95, 0xc8, 0x64, 0x32, 0xac, 0x56, 0x2b, + 0x66, 0xb3, 0x19, 0x93, 0xc9, 0x84, 0x48, 0x24, 0x42, 0xbd, 0x5e, 0x7f, + 0xbd, 0x64, 0xdb, 0xb6, 0x01, 0x28, 0x97, 0xcb, 0x54, 0x2a, 0x15, 0x34, + 0x4d, 0x13, 0xa1, 0x50, 0x48, 0x2a, 0x8a, 0xc2, 0x7a, 0xbd, 0xc6, 0xb6, + 0x6d, 0xea, 0xf5, 0x3a, 0xa3, 0xd1, 0x48, 0xf6, 0xfb, 0xfd, 0xc7, 0x61, + 0xc3, 0x30, 0xa8, 0xd5, 0x6a, 0xe2, 0x53, 0x53, 0xb6, 0xdb, 0x2d, 0x00, + 0xc5, 0x62, 0x11, 0x4d, 0xd3, 0x04, 0x80, 0xa6, 0x69, 0xa2, 0x50, 0x28, + 0xf0, 0x6b, 0x1c, 0x10, 0x86, 0x61, 0x3c, 0x60, 0x80, 0xf8, 0xb2, 0xcb, + 0x89, 0x44, 0x02, 0x00, 0xc7, 0x71, 0x00, 0xde, 0x27, 0x5d, 0xfe, 0xdc, + 0x3f, 0xe2, 0x1f, 0xa0, 0xe2, 0x8f, 0x63, 0x93, 0xcb, 0xe5, 0x00, 0x18, + 0x8f, 0xc7, 0x98, 0xa6, 0x89, 0xeb, 0xba, 0xd2, 0x34, 0x4d, 0xc6, 0xe3, + 0x31, 0x00, 0xe9, 0x74, 0x1a, 0x80, 0x5a, 0xad, 0xf6, 0x80, 0x3e, 0xed, + 0xf2, 0x7a, 0xbd, 0x96, 0xc3, 0xe1, 0x90, 0xf9, 0x7c, 0xfe, 0xa5, 0x29, + 0x1c, 0x0e, 0xd3, 0xe9, 0x74, 0xd0, 0x75, 0x5d, 0x00, 0x8c, 0x46, 0xa3, + 0x8f, 0x17, 0xfc, 0x0e, 0xf4, 0x3c, 0x4f, 0xee, 0x76, 0x3b, 0x16, 0x8b, + 0x05, 0x8e, 0xe3, 0xb0, 0xdf, 0xef, 0x89, 0xc7, 0xe3, 0xa4, 0xd3, 0x69, + 0x6c, 0xdb, 0xe6, 0x74, 0x3a, 0x11, 0x8d, 0x46, 0x69, 0xb7, 0xdb, 0x0f, + 0xe8, 0xd3, 0x0c, 0x01, 0x3c, 0xcf, 0x93, 0xae, 0xeb, 0xe2, 0x79, 0x1e, + 0xb7, 0xdb, 0x0d, 0x9f, 0xcf, 0x87, 0xa2, 0x28, 0x5c, 0x2e, 0x17, 0x7a, + 0xbd, 0x1e, 0xc7, 0xe3, 0x91, 0x58, 0x2c, 0x46, 0xab, 0xd5, 0x7a, 0x0a, + 0x7d, 0xbc, 0x14, 0x55, 0x55, 0x85, 0xaa, 0xaa, 0x9f, 0x0c, 0x7e, 0xbf, + 0x5f, 0x36, 0x9b, 0x4d, 0xba, 0xdd, 0x2e, 0xd7, 0xeb, 0x95, 0xeb, 0xf5, + 0x8a, 0xae, 0xeb, 0x7f, 0xcf, 0xf0, 0x99, 0x5c, 0xd7, 0x95, 0x87, 0xc3, + 0x81, 0xfb, 0xfd, 0x4e, 0x36, 0x9b, 0x7d, 0xad, 0xe4, 0xff, 0xe7, 0xfb, + 0x7a, 0x1b, 0x00, 0x59, 0xa8, 0xba, 0x68, 0xca, 0x4f, 0xc5, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 }; -static unsigned int search_sel_png_len = 527; +unsigned int mag_sel_png_len = 563; + +unsigned char mag_png[] = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, + 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, + 0x08, 0x06, 0x00, 0x00, 0x00, 0x90, 0x8c, 0x2d, 0xb5, 0x00, 0x00, 0x00, + 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b, + 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48, + 0x52, 0x4d, 0x00, 0x00, 0x6d, 0x98, 0x00, 0x00, 0x73, 0x8e, 0x00, 0x00, + 0xe0, 0x38, 0x00, 0x00, 0x82, 0xd5, 0x00, 0x00, 0x7a, 0x07, 0x00, 0x00, + 0xca, 0xb4, 0x00, 0x00, 0x33, 0x44, 0x00, 0x00, 0x1c, 0x76, 0x84, 0x36, + 0x2a, 0xbd, 0x00, 0x00, 0x01, 0x92, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, + 0xe4, 0x94, 0xbb, 0xaa, 0xea, 0x50, 0x10, 0x86, 0xbf, 0xec, 0x08, 0x29, + 0x36, 0x24, 0x85, 0x17, 0xbc, 0x81, 0x18, 0x11, 0x6c, 0xd4, 0x42, 0x8c, + 0x0f, 0x61, 0xe1, 0x2b, 0xf8, 0x0a, 0x0a, 0x3e, 0x8f, 0xf8, 0x0c, 0x36, + 0x62, 0x1f, 0x92, 0x88, 0x88, 0x10, 0x9b, 0x14, 0x42, 0x44, 0x45, 0x41, + 0x2c, 0xac, 0x92, 0x80, 0xb2, 0x4e, 0x73, 0x94, 0x03, 0xfb, 0xb0, 0x4d, + 0xb1, 0x8b, 0x03, 0xe7, 0xaf, 0xd6, 0x62, 0xfe, 0xf5, 0x31, 0xc3, 0xcc, + 0x1a, 0x49, 0x08, 0xc1, 0x4f, 0xea, 0x83, 0x1f, 0xd6, 0xbf, 0x0f, 0x4c, + 0x3c, 0x0f, 0xd7, 0xeb, 0x55, 0x38, 0x8e, 0xc3, 0x66, 0xb3, 0x61, 0xb7, + 0xdb, 0x51, 0x2a, 0x95, 0xa8, 0xd7, 0xeb, 0x18, 0x86, 0x41, 0x32, 0x99, + 0x94, 0xe2, 0x02, 0x25, 0x21, 0x04, 0x97, 0xcb, 0x45, 0x4c, 0xa7, 0x53, + 0x6c, 0xdb, 0xfe, 0x62, 0xe8, 0x74, 0x3a, 0xf4, 0x7a, 0x3d, 0x52, 0xa9, + 0x94, 0x14, 0x3b, 0xc3, 0xc5, 0x62, 0x81, 0x6d, 0xdb, 0x94, 0xcb, 0x65, + 0x5a, 0xad, 0x16, 0x95, 0x4a, 0x85, 0xed, 0x76, 0xcb, 0x72, 0xb9, 0xc4, + 0x71, 0x1c, 0xb2, 0xd9, 0x2c, 0xdd, 0x6e, 0x37, 0x7e, 0xc9, 0xae, 0xeb, + 0x02, 0xd0, 0x6e, 0xb7, 0x31, 0x0c, 0x03, 0x55, 0x55, 0xa5, 0x74, 0x3a, + 0x2d, 0x64, 0x59, 0xc6, 0xf7, 0x7d, 0x5c, 0xd7, 0x8d, 0x0d, 0xfc, 0x00, + 0xd8, 0xef, 0xf7, 0x00, 0x34, 0x9b, 0x4d, 0x54, 0x55, 0x95, 0x00, 0x54, + 0x55, 0x95, 0x1a, 0x8d, 0x06, 0x7f, 0xc6, 0x63, 0x03, 0x8b, 0xc5, 0x22, + 0x00, 0x9e, 0xe7, 0x01, 0x3c, 0x27, 0x5d, 0xfc, 0xbe, 0xbf, 0xe2, 0xb1, + 0x81, 0xb5, 0x5a, 0x0d, 0x00, 0xd3, 0x34, 0xb1, 0x2c, 0x8b, 0x20, 0x08, + 0x84, 0x65, 0x59, 0x98, 0xa6, 0x09, 0x80, 0xae, 0xeb, 0xaf, 0x07, 0xf3, + 0xf9, 0xfc, 0x7d, 0x97, 0x7d, 0xdf, 0x17, 0xb3, 0xd9, 0x8c, 0xd5, 0x6a, + 0xf5, 0x57, 0x53, 0x26, 0x93, 0x61, 0x34, 0x1a, 0xa1, 0x69, 0x9a, 0x14, + 0x6b, 0x6c, 0xa2, 0x28, 0x12, 0x87, 0xc3, 0x81, 0xf5, 0x7a, 0x8d, 0xe7, + 0x79, 0x1c, 0x8f, 0x47, 0x0a, 0x85, 0x02, 0xba, 0xae, 0xe3, 0xba, 0x2e, + 0x97, 0xcb, 0x85, 0x5c, 0x2e, 0xc7, 0x70, 0x38, 0x7c, 0x0b, 0x95, 0x9e, + 0xcb, 0x21, 0x8a, 0x22, 0x11, 0x04, 0x01, 0x51, 0x14, 0x71, 0xbf, 0xdf, + 0x49, 0x24, 0x12, 0xc8, 0xb2, 0xcc, 0xed, 0x76, 0x63, 0x32, 0x99, 0x70, + 0x3e, 0x9f, 0xc9, 0xe7, 0xf3, 0x0c, 0x06, 0x83, 0x6f, 0xa1, 0xaf, 0x9f, + 0xa2, 0x28, 0x8a, 0xa4, 0x28, 0xca, 0x17, 0xc3, 0xe7, 0xe7, 0xa7, 0xe8, + 0xf7, 0xfb, 0x8c, 0xc7, 0x63, 0xc2, 0x30, 0x24, 0x0c, 0x43, 0x34, 0x4d, + 0x7b, 0x9f, 0xe1, 0x77, 0x0a, 0x82, 0x40, 0x9c, 0x4e, 0x27, 0x1e, 0x8f, + 0x07, 0xd5, 0x6a, 0x35, 0x5e, 0xc9, 0xff, 0xcf, 0xfa, 0xfa, 0x35, 0x00, + 0x70, 0xf3, 0xae, 0xcb, 0x89, 0xcd, 0xd2, 0x46, 0x00, 0x00, 0x00, 0x00, + 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +}; +unsigned int mag_png_len = 524; -unsigned char search_png[] = { +unsigned char search_l_png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, - 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, - 0x08, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x56, 0x25, 0x04, 0x00, 0x00, 0x01, - 0x9e, 0x49, 0x44, 0x41, 0x54, 0x28, 0x15, 0xa5, 0x52, 0xcd, 0xca, 0x41, - 0x51, 0x14, 0x5d, 0xdf, 0x75, 0xe5, 0x96, 0xa2, 0x64, 0x2e, 0x6e, 0x86, - 0x64, 0x24, 0x79, 0x07, 0xc9, 0x0b, 0x18, 0x1b, 0x9a, 0x18, 0x78, 0x08, - 0x33, 0x03, 0x6f, 0x21, 0x19, 0x31, 0x62, 0x22, 0x49, 0x28, 0x26, 0xa2, - 0x0c, 0x0c, 0x4c, 0xa4, 0x28, 0x7f, 0x85, 0xed, 0xee, 0x5d, 0xe7, 0x84, - 0x81, 0xfa, 0xbe, 0x6f, 0x0f, 0xee, 0x3d, 0xad, 0xbd, 0xd6, 0xda, 0xfb, - 0xec, 0x7d, 0x80, 0x7f, 0xc4, 0xcf, 0xab, 0xb6, 0xdf, 0xef, 0xd3, 0x64, - 0x32, 0xc1, 0x62, 0xb1, 0x10, 0x38, 0x1a, 0x8d, 0x22, 0x91, 0x48, 0x20, - 0x95, 0x4a, 0xbd, 0xf1, 0x94, 0x46, 0x83, 0x8d, 0x46, 0x83, 0xea, 0xf5, - 0x3a, 0xee, 0xf7, 0x3b, 0x1e, 0x8f, 0x87, 0xe4, 0x0d, 0xc3, 0x80, 0xcb, - 0xe5, 0x42, 0x2e, 0x97, 0x43, 0x36, 0x9b, 0xd5, 0xdc, 0x37, 0x71, 0xaf, - 0xd7, 0xa3, 0x5a, 0xad, 0x06, 0xaf, 0xd7, 0x8b, 0x64, 0x32, 0x89, 0x58, - 0x2c, 0x26, 0xf9, 0xe9, 0x74, 0x8a, 0xc1, 0x60, 0x80, 0xe3, 0xf1, 0x88, - 0x42, 0xa1, 0x80, 0x74, 0x3a, 0xfd, 0x66, 0x60, 0x32, 0x6b, 0x38, 0x1c, - 0xe2, 0x76, 0xbb, 0x71, 0x7b, 0xc8, 0x64, 0x32, 0x08, 0x04, 0x02, 0x42, - 0xda, 0xed, 0x76, 0xc4, 0xd5, 0x5b, 0xad, 0x96, 0x70, 0x54, 0x45, 0xf5, - 0x37, 0xf8, 0x30, 0x9f, 0xcf, 0x41, 0x44, 0x52, 0x55, 0x09, 0x19, 0xe7, - 0x33, 0x77, 0xc2, 0x39, 0xe6, 0x7c, 0x86, 0x88, 0xd5, 0x1d, 0x3d, 0x1e, - 0xcf, 0x67, 0x1e, 0x96, 0x65, 0x09, 0xa6, 0x38, 0xaf, 0x04, 0x11, 0x47, - 0x22, 0x11, 0xc1, 0xc6, 0xe3, 0x31, 0x0f, 0x8b, 0x14, 0x81, 0xcf, 0x8c, - 0x71, 0xd8, 0xb6, 0xad, 0x60, 0xfd, 0x97, 0x3b, 0xc7, 0xe3, 0x71, 0x8c, - 0x46, 0x23, 0x74, 0xbb, 0x5d, 0x98, 0xa6, 0x89, 0xcd, 0x66, 0xe3, 0x74, - 0x4a, 0x68, 0x36, 0x9b, 0xe8, 0x74, 0x3a, 0x42, 0xe6, 0xb5, 0x7d, 0x86, - 0x0c, 0x66, 0xbf, 0xdf, 0xcb, 0x9a, 0xda, 0xed, 0xb6, 0x88, 0x79, 0x3d, - 0x1c, 0xbc, 0x36, 0x1e, 0x24, 0x1b, 0x85, 0x42, 0x21, 0x94, 0xcb, 0x65, - 0xf8, 0xfd, 0x7e, 0x3d, 0x71, 0xa9, 0xcc, 0x00, 0x4f, 0x36, 0x18, 0x0c, - 0x62, 0x36, 0x9b, 0x61, 0xb5, 0x5a, 0x89, 0x38, 0x1c, 0x0e, 0x83, 0xaf, - 0xe4, 0xac, 0x12, 0xeb, 0xf5, 0x1a, 0x95, 0x4a, 0x05, 0x87, 0xc3, 0x81, - 0x7c, 0x3e, 0x9f, 0x18, 0x68, 0x17, 0x66, 0x73, 0x07, 0xd7, 0xeb, 0x55, - 0x57, 0x73, 0xbb, 0xdd, 0xd2, 0x89, 0x63, 0x8c, 0x6a, 0xb5, 0x8a, 0xed, - 0x76, 0x0b, 0x36, 0x2c, 0x95, 0x4a, 0x50, 0x06, 0x52, 0xe5, 0xdb, 0xe7, - 0x74, 0x3a, 0xd1, 0x72, 0xb9, 0xa4, 0x62, 0xb1, 0x48, 0xf9, 0x7c, 0x9e, - 0x9c, 0x77, 0xa1, 0x87, 0xfa, 0x4d, 0xa7, 0x73, 0xe7, 0xf3, 0x59, 0x0c, - 0x9c, 0x07, 0x43, 0xce, 0x8b, 0xfb, 0x9d, 0x98, 0x5d, 0x2e, 0x97, 0xcb, - 0xdf, 0x84, 0xba, 0x85, 0x97, 0xc3, 0x13, 0x25, 0xab, 0xcb, 0x08, 0x4d, - 0x39, 0xd0, 0x92, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, - 0x42, 0x60, 0x82 + 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, + 0x08, 0x06, 0x00, 0x00, 0x00, 0x90, 0x8c, 0x2d, 0xb5, 0x00, 0x00, 0x00, + 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b, + 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48, + 0x52, 0x4d, 0x00, 0x00, 0x6d, 0x98, 0x00, 0x00, 0x73, 0x8e, 0x00, 0x00, + 0xe0, 0x38, 0x00, 0x00, 0x82, 0xd5, 0x00, 0x00, 0x7a, 0x07, 0x00, 0x00, + 0xca, 0xb4, 0x00, 0x00, 0x33, 0x44, 0x00, 0x00, 0x1c, 0x76, 0x84, 0x36, + 0x2a, 0xbd, 0x00, 0x00, 0x01, 0xe2, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, + 0xac, 0x54, 0x3d, 0xab, 0xda, 0x50, 0x18, 0x7e, 0xce, 0xc9, 0x39, 0x31, + 0x4d, 0xfc, 0x40, 0x30, 0x46, 0x14, 0xec, 0x50, 0x44, 0x17, 0x2f, 0x9d, + 0xba, 0x15, 0xda, 0xd1, 0xa1, 0x2e, 0xdd, 0x3b, 0x14, 0x4a, 0xa1, 0x7f, + 0xa6, 0x74, 0xbd, 0x43, 0xff, 0x84, 0xfd, 0x05, 0x82, 0xda, 0xa5, 0x83, + 0x1d, 0xdc, 0x8a, 0x88, 0xa0, 0x44, 0x83, 0xc6, 0x28, 0xad, 0x1f, 0x49, + 0xde, 0x2e, 0x8d, 0x78, 0x6f, 0xaf, 0x34, 0x68, 0x9f, 0xed, 0xbc, 0x70, + 0x1e, 0x9e, 0x8f, 0xf7, 0x1c, 0x46, 0x44, 0x38, 0x45, 0xaf, 0xd7, 0x63, + 0xb6, 0x6d, 0xe7, 0x6d, 0xdb, 0x6e, 0xba, 0xae, 0xfb, 0x6e, 0xb3, 0xd9, + 0xdc, 0x6c, 0xb7, 0xdb, 0x04, 0xe7, 0x1c, 0x8c, 0x31, 0xfc, 0x0b, 0x2c, + 0x22, 0xec, 0x76, 0xbb, 0xcc, 0xf3, 0xbc, 0xcc, 0x68, 0x34, 0x7a, 0xed, + 0xba, 0xee, 0x87, 0x6c, 0x36, 0x7b, 0x93, 0xcb, 0xe5, 0x44, 0x3a, 0x9d, + 0x86, 0xa6, 0x69, 0x50, 0x14, 0x25, 0x3e, 0x61, 0xa7, 0xd3, 0x61, 0xf3, + 0xf9, 0xfc, 0xc9, 0x78, 0x3c, 0xbe, 0xd5, 0x75, 0xfd, 0x79, 0xa5, 0x52, + 0x11, 0xa6, 0x69, 0x22, 0x95, 0x4a, 0x41, 0xd3, 0x34, 0x08, 0x21, 0xc0, + 0x18, 0x8b, 0x45, 0x28, 0x00, 0x60, 0xb5, 0x5a, 0xa5, 0x27, 0x93, 0xc9, + 0xa7, 0x62, 0xb1, 0xf8, 0xb2, 0x5a, 0xad, 0x22, 0x9f, 0xcf, 0xc3, 0x30, + 0x0c, 0x48, 0x29, 0xc1, 0x39, 0x47, 0x5c, 0xbb, 0x00, 0x20, 0xda, 0xed, + 0x36, 0x9f, 0x4e, 0xa7, 0xaf, 0x4c, 0xd3, 0x7c, 0x51, 0xaf, 0xd7, 0x61, + 0x59, 0x16, 0x74, 0x5d, 0x87, 0x94, 0x12, 0x97, 0x40, 0x2c, 0x16, 0x0b, + 0x93, 0x88, 0xde, 0xd6, 0x6a, 0x35, 0xdd, 0xb2, 0x2c, 0x18, 0x86, 0x01, + 0x21, 0x04, 0x2e, 0x05, 0xf7, 0x3c, 0xaf, 0x59, 0x2e, 0x97, 0x9f, 0x45, + 0xca, 0x38, 0xe7, 0xb8, 0x06, 0x3c, 0x08, 0x82, 0x46, 0xa1, 0x50, 0x78, + 0x74, 0xad, 0xb2, 0x23, 0xa1, 0x94, 0xf2, 0x69, 0x26, 0x93, 0xe1, 0x51, + 0x66, 0xf7, 0xf7, 0xd2, 0xf7, 0xfd, 0x07, 0x2f, 0x9e, 0x9b, 0x73, 0x55, + 0x55, 0xb3, 0x91, 0x55, 0xc6, 0x18, 0xc2, 0x30, 0xbc, 0x1b, 0xf2, 0x19, + 0xd5, 0xe7, 0xe6, 0x5c, 0x4a, 0x39, 0x06, 0x70, 0x5c, 0x8b, 0xb8, 0xeb, + 0x71, 0xd6, 0x32, 0x11, 0x75, 0xf6, 0xfb, 0xfd, 0xd1, 0xea, 0xd5, 0xa5, + 0x10, 0xd1, 0xb7, 0xf5, 0x7a, 0x1d, 0x84, 0x61, 0x08, 0x22, 0xba, 0x9e, + 0x50, 0x51, 0x94, 0xaf, 0x8e, 0xe3, 0xfc, 0xdc, 0xed, 0x76, 0xf8, 0x1f, + 0xe0, 0x89, 0x44, 0xe2, 0xc7, 0x72, 0xb9, 0xfc, 0xee, 0x38, 0x0e, 0x7c, + 0xdf, 0x3f, 0x5a, 0xbf, 0xdf, 0x76, 0x6c, 0xc2, 0x46, 0xa3, 0xf1, 0x2b, + 0x08, 0x82, 0xdb, 0xe1, 0x70, 0xe8, 0x2c, 0x16, 0x0b, 0x04, 0x41, 0x00, + 0x22, 0xba, 0xb8, 0x1c, 0xfe, 0x67, 0x05, 0xbe, 0x78, 0x9e, 0xf7, 0x79, + 0x30, 0x18, 0x8c, 0x67, 0xb3, 0x19, 0x45, 0x25, 0x9d, 0x53, 0x49, 0x44, + 0x38, 0x1c, 0x0e, 0x38, 0x2d, 0xf3, 0xce, 0x6f, 0x03, 0x60, 0x29, 0x84, + 0xf8, 0xe8, 0x79, 0x9e, 0xdb, 0xef, 0xf7, 0xdf, 0x97, 0x4a, 0xa5, 0xc7, + 0xd1, 0x53, 0x54, 0x55, 0x15, 0x52, 0xca, 0xbf, 0x14, 0x0b, 0x21, 0x1e, + 0x8c, 0x87, 0x9d, 0x1e, 0x5a, 0xad, 0x96, 0x00, 0x50, 0x27, 0xa2, 0x37, + 0xaa, 0xaa, 0x36, 0x0d, 0xc3, 0x28, 0x26, 0x93, 0x49, 0xa1, 0x69, 0x9a, + 0xc2, 0x39, 0x8f, 0x95, 0xc1, 0xef, 0x01, 0x00, 0x35, 0xe5, 0xd5, 0x5e, + 0xd0, 0xed, 0x0c, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, + 0xae, 0x42, 0x60, 0x82 }; -unsigned int search_png_len = 471; +unsigned int search_l_png_len = 604; +unsigned char search_m_png[] = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, + 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, + 0x08, 0x02, 0x00, 0x00, 0x00, 0x35, 0x5e, 0x4b, 0x4d, 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, 0x30, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, + 0x62, 0x2c, 0x2f, 0x2f, 0x67, 0x60, 0x60, 0x60, 0x3c, 0x7e, 0xfc, 0x38, + 0x88, 0xfa, 0xf8, 0xf1, 0x23, 0x88, 0xfa, 0xff, 0xff, 0x3f, 0x90, 0x62, + 0x62, 0x00, 0x03, 0x5a, 0x50, 0x2c, 0x10, 0x1b, 0x58, 0x6e, 0xdd, 0xba, + 0x05, 0xa4, 0x00, 0x02, 0x0c, 0x00, 0xa5, 0x07, 0x0f, 0x3c, 0x7e, 0xe1, + 0x45, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, + 0x60, 0x82 +}; +unsigned int search_m_png_len = 158; +unsigned char search_r_png[] = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, + 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, + 0x08, 0x06, 0x00, 0x00, 0x00, 0x9d, 0x92, 0x5d, 0xf2, 0x00, 0x00, 0x00, + 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b, + 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48, + 0x52, 0x4d, 0x00, 0x00, 0x6d, 0x98, 0x00, 0x00, 0x73, 0x8e, 0x00, 0x00, + 0xe0, 0x38, 0x00, 0x00, 0x82, 0xd5, 0x00, 0x00, 0x7a, 0x07, 0x00, 0x00, + 0xca, 0xb4, 0x00, 0x00, 0x33, 0x44, 0x00, 0x00, 0x1c, 0x76, 0x84, 0x36, + 0x2a, 0xbd, 0x00, 0x00, 0x01, 0xea, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, + 0xa4, 0xd4, 0xbf, 0xaa, 0x1a, 0x41, 0x14, 0x06, 0xf0, 0x6f, 0xf6, 0x9f, + 0xb2, 0x0a, 0x6b, 0xa5, 0x56, 0x8b, 0xa4, 0x92, 0xd4, 0x69, 0x7c, 0x03, + 0xb1, 0x59, 0x49, 0x11, 0x52, 0xdf, 0xbc, 0x43, 0xcc, 0x2b, 0xa4, 0x4c, + 0x97, 0x67, 0x08, 0xa4, 0x11, 0x2c, 0x52, 0x5c, 0x42, 0x24, 0x60, 0x8a, + 0x34, 0x29, 0x42, 0x50, 0x41, 0x21, 0xa0, 0x97, 0xd5, 0x55, 0xb3, 0xbb, + 0xee, 0xb2, 0xce, 0xee, 0xcc, 0x49, 0x91, 0x28, 0xc2, 0x0d, 0xe6, 0xaa, + 0xa7, 0x9d, 0xc3, 0x8f, 0x73, 0x98, 0xf9, 0x86, 0x75, 0x3a, 0x1d, 0xc2, + 0x89, 0x12, 0x42, 0x24, 0xf9, 0x7c, 0x7e, 0x5a, 0x2c, 0x16, 0x3f, 0x96, + 0x4a, 0xa5, 0x5e, 0xb5, 0x5a, 0xfd, 0x52, 0x2e, 0x97, 0xfd, 0x46, 0xa3, + 0x21, 0x8e, 0xfb, 0xd8, 0x60, 0x30, 0x38, 0x09, 0x65, 0x59, 0x86, 0x24, + 0x49, 0x10, 0x04, 0x81, 0xf0, 0x3c, 0x6f, 0xb3, 0xd9, 0x6c, 0x7e, 0x58, + 0x96, 0x75, 0x5b, 0xab, 0xd5, 0xde, 0x34, 0x9b, 0xcd, 0x5f, 0x07, 0xc8, + 0xf7, 0xfd, 0x93, 0x90, 0x94, 0xf2, 0x80, 0x85, 0x61, 0x88, 0xe5, 0x72, + 0x49, 0xe3, 0xf1, 0x58, 0xc6, 0x71, 0xfc, 0xc1, 0xb6, 0xed, 0xe7, 0x8e, + 0xe3, 0x84, 0x00, 0xc0, 0xa4, 0x94, 0x27, 0x21, 0x22, 0x82, 0x94, 0x12, + 0x52, 0x4a, 0xa4, 0x69, 0x8a, 0x28, 0x8a, 0xb0, 0x58, 0x2c, 0x30, 0x1c, + 0x0e, 0x85, 0xeb, 0xba, 0xef, 0x6b, 0xb5, 0xda, 0x4d, 0xab, 0xd5, 0x8a, + 0x34, 0xc6, 0xd8, 0x29, 0x07, 0x8c, 0x31, 0x28, 0x8a, 0x02, 0x22, 0x82, + 0xae, 0xeb, 0x30, 0x0c, 0x03, 0xb9, 0x5c, 0x0e, 0x86, 0x61, 0xa8, 0x52, + 0xca, 0xa7, 0xf3, 0xf9, 0xfc, 0x67, 0xbf, 0xdf, 0x7f, 0xa5, 0xe0, 0x81, + 0xc5, 0x18, 0x03, 0x63, 0x0c, 0x9a, 0xa6, 0xa1, 0x50, 0x28, 0xa0, 0x52, + 0xa9, 0xa0, 0x5e, 0xaf, 0x6b, 0x00, 0x5e, 0xac, 0xd7, 0xeb, 0x47, 0x0f, + 0x86, 0x8e, 0x41, 0x55, 0x55, 0x61, 0x9a, 0x26, 0x2a, 0x95, 0x0a, 0x6c, + 0xdb, 0xb6, 0x82, 0x20, 0x78, 0x76, 0x36, 0xb4, 0xc7, 0xf6, 0x93, 0x55, + 0xab, 0x55, 0x26, 0x84, 0x78, 0xac, 0x1c, 0x5f, 0xf3, 0xb9, 0xa5, 0xeb, + 0x3a, 0x2c, 0xcb, 0x82, 0xae, 0xeb, 0xbb, 0x03, 0xa4, 0x69, 0xda, 0xd9, + 0x53, 0x29, 0x8a, 0x02, 0xd3, 0x34, 0x99, 0x61, 0x18, 0xcb, 0x8b, 0x56, + 0x3b, 0xc6, 0xfe, 0x4e, 0x76, 0x77, 0x15, 0x44, 0x44, 0xe0, 0x9c, 0x0b, + 0x22, 0xfa, 0xaa, 0x5c, 0x83, 0x48, 0x29, 0x11, 0x86, 0xe1, 0x86, 0x88, + 0xbe, 0x5f, 0x35, 0xd1, 0x6e, 0xb7, 0x83, 0xe7, 0x79, 0x3d, 0x55, 0x55, + 0x7d, 0xd0, 0x05, 0x25, 0xa5, 0x24, 0xce, 0x39, 0x4d, 0x26, 0x93, 0x45, + 0xb7, 0xdb, 0x7d, 0x42, 0x44, 0x50, 0x2e, 0x59, 0x49, 0x08, 0x81, 0xf5, + 0x7a, 0x9d, 0x4c, 0xa7, 0xd3, 0x77, 0x42, 0x88, 0x6f, 0x00, 0xa0, 0xed, + 0x0f, 0xb3, 0x2c, 0x3b, 0xe4, 0xe9, 0x5f, 0xf9, 0x23, 0xfa, 0x93, 0x6d, + 0xce, 0x39, 0x56, 0xab, 0x95, 0x18, 0x0e, 0x87, 0x9f, 0x82, 0x20, 0x78, + 0xdd, 0x6e, 0xb7, 0xd3, 0x7b, 0xe9, 0x27, 0xa2, 0x7b, 0x08, 0x11, 0x21, + 0x4d, 0x53, 0x70, 0xce, 0x11, 0xc7, 0xb1, 0x74, 0x5d, 0xd7, 0x9f, 0xcd, + 0x66, 0x3d, 0xce, 0xf9, 0x4b, 0xc7, 0x71, 0xee, 0x0e, 0xef, 0x70, 0x34, + 0x1a, 0xe1, 0x7f, 0xff, 0x51, 0x92, 0x24, 0xd8, 0x6e, 0xb7, 0x61, 0x14, + 0x45, 0x9f, 0x39, 0xe7, 0x6f, 0x19, 0x63, 0xb7, 0x8e, 0xe3, 0x44, 0xc7, + 0x7d, 0xbf, 0x07, 0x00, 0x5f, 0x77, 0x46, 0x8c, 0x30, 0x2c, 0xd8, 0x9d, + 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +}; +unsigned int search_r_png_len = 612; static unsigned char close_png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, @@ -468,112 +488,140 @@ static unsigned char close_png[] = { }; static unsigned int close_png_len = 273; +#if 0 +unsigned char open_gif[] = { + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x09, 0x00, 0x09, 0x00, 0xf0, 0x00, + 0x00, 0x8e, 0xaf, 0xc4, 0x00, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x01, 0x00, + 0x00, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x00, 0x02, 0x0d, 0x8c, 0x8f, 0xa9, 0xcb, 0xe0, 0xff, 0x02, 0x8c, 0x66, + 0x26, 0x7a, 0x51, 0x01, 0x00, 0x3b +}; +unsigned int open_gif_len = 54; + +unsigned char closed_gif[] = { + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x09, 0x00, 0x09, 0x00, 0xf0, 0x00, + 0x00, 0x8e, 0xaf, 0xc4, 0x00, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x01, 0x00, + 0x00, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x00, 0x02, 0x10, 0x8c, 0x03, 0xa7, 0x98, 0xcb, 0xad, 0x80, 0x84, 0x66, + 0xca, 0x38, 0x57, 0xd6, 0xf4, 0xd0, 0x02, 0x00, 0x3b +}; +unsigned int closed_gif_len = 57; +#endif + +static unsigned char closed_png[81] = +{ + 0, 0, 0, 0,142, 0, 0, 0, 0, + 0, 0, 0, 0,142,142, 0, 0, 0, + 0, 0, 0, 0,142,142,142, 0, 0, + 0, 0, 0, 0,142,142,142,142, 0, + 0, 0, 0, 0,142,142,142,142,142, + 0, 0, 0, 0,142,142,142,142, 0, + 0, 0, 0, 0,142,142,142, 0, 0, + 0, 0, 0, 0,142,142, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0 +}; + +static unsigned char closed_a_png[81] = +{ + 0, 0, 0, 0,255, 0, 0, 0, 0, + 0, 0, 0, 0,255,255, 0, 0, 0, + 0, 0, 0, 0,255,255,255, 0, 0, + 0, 0, 0, 0,255,255,255,255, 0, + 0, 0, 0, 0,255,255,255,255,255, + 0, 0, 0, 0,255,255,255,255, 0, + 0, 0, 0, 0,255,255,255, 0, 0, + 0, 0, 0, 0,255,255, 0, 0, 0, + 0, 0, 0, 0,255, 0, 0, 0, 0 +}; + +static unsigned char open_png[81] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 142,142,142,142,142,142,142,142,142, + 0,142,142,142,142,142,142,142, 0, + 0, 0,142,142,142,142,142, 0, 0, + 0, 0, 0,142,142,142, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0 +}; + +static unsigned char open_a_png[81] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255,255,255,255,255,255,255,255,255, + 0,255,255,255,255,255,255,255, 0, + 0, 0,255,255,255,255,255, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, + 0, 0, 0, 0,255, 0, 0, 0, 0 +}; + + + +//------------------------------------------------------------------------ static const char tabs_css[] = -"/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */\n" -"\n" -"DIV.tabs\n" -"{\n" -" float : left;\n" -" width : 100%;\n" -" background : url(\"tab_b.gif\") repeat-x bottom;\n" -" margin-bottom : 4px;\n" -"}\n" -"\n" -"DIV.tabs UL\n" -"{\n" -" margin : 0px;\n" -" padding-left : 10px;\n" -" list-style : none;\n" -"}\n" -"\n" -"DIV.tabs LI, DIV.tabs FORM\n" -"{\n" -" display : inline;\n" -" margin : 0px;\n" -" padding : 0px;\n" -"}\n" -"\n" -"DIV.tabs FORM\n" -"{\n" -" float : right;\n" -"}\n" -"\n" -"DIV.tabs A\n" -"{\n" -" float : left;\n" -" background : url(\"tab_r.gif\") no-repeat right top;\n" -" border-bottom : 1px solid #84B0C7;\n" -" font-size : 80%;\n" -" font-weight : bold;\n" -" text-decoration : none;\n" -"}\n" -"\n" -"DIV.tabs A:hover\n" -"{\n" -" background-position: 100% -150px;\n" +".tabs, .tabs2, .tabs3 {\n" +" background-image: url('tab_b.png');\n" +" z-index: 101;\n" +" font-size: 13px;\n" "}\n" "\n" -"DIV.tabs A:link, DIV.tabs A:visited,\n" -"DIV.tabs A:active, DIV.tabs A:hover\n" -"{\n" -" color: #1A419D;\n" +".tabs2 {\n" +" font-size: 10px;\n" "}\n" -"\n" -"DIV.tabs SPAN\n" -"{\n" -" float : left;\n" -" display : block;\n" -" background : url(\"tab_l.gif\") no-repeat left top;\n" -" padding : 5px 9px;\n" -" white-space : nowrap;\n" +".tabs3 {\n" +" font-size: 9px;\n" "}\n" "\n" -"DIV.tabs #MSearchBox\n" -"{\n" -" float : right;\n" -" display : inline;\n" -" font-size : 1em;\n" +".tablist {\n" +" margin: 0;\n" +" padding: 0;\n" +" display: table\n" "}\n" "\n" -"DIV.tabs TD\n" -"{\n" -" font-size : 80%;\n" -" font-weight : bold;\n" -" text-decoration : none;\n" +".tablist li {\n" +" float: left;\n" +" display: table-cell\n" +" background-image: url('tab_b.png');\n" +" line-height: 36px;\n" +" list-style: none;\n" "}\n" "\n" -"\n" -"\n" -"/* Commented Backslash Hack hides rule from IE5-Mac \\*/\n" -"DIV.tabs SPAN {float : none;}\n" -"/* End IE5-Mac hack */\n" -"\n" -"DIV.tabs A:hover SPAN\n" -"{\n" -" background-position: 0% -150px;\n" +".tablist a {\n" +" display: block;\n" +" padding: 0 20px;\n" +" font-weight: bold;\n" +" background-image:url('tab_s.png');\n" +" background-repeat:no-repeat;\n" +" background-position:right;\n" +" color: ##30;\n" +" text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n" +" text-decoration: none;\n" +" outline: none;\n" "}\n" "\n" -"DIV.tabs LI.current A\n" -"{\n" -" background-position: 100% -150px;\n" -" border-width : 0px;\n" +".tabs3 .tablist a {\n" +" padding: 0 10px;\n" "}\n" "\n" -"DIV.tabs LI.current SPAN\n" -"{\n" -" background-position: 0% -150px;\n" -" padding-bottom : 6px;\n" +".tablist a:hover {\n" +" background-image: url('tab_h.png');\n" +" background-repeat:repeat-x;\n" +" color: #fff;\n" +" text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);\n" +" text-decoration: none;\n" "}\n" "\n" -"DIV.navpath\n" -"{\n" -" background : none;\n" -" border : none;\n" -" border-bottom : 1px solid #84B0C7;\n" -" text-align : center;\n" -" margin : 2px;\n" -" padding : 2px;\n" +".tablist li.current a {\n" +" background-image: url('tab_a.png');\n" +" background-repeat:repeat-x;\n" +" color: #fff;\n" +" text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);\n" "}\n" ; @@ -584,6 +632,16 @@ struct img_data_item unsigned int len; }; +struct colored_img_data_item +{ + const char *name; + unsigned short width; + unsigned short height; + unsigned char *content; + unsigned char *alpha; +}; + + static void writeImgData(const char *dir,img_data_item *data) { while (data->name) @@ -604,63 +662,112 @@ static void writeImgData(const char *dir,img_data_item *data) } } -static img_data_item tab_data[] = +static void writeColoredImgData(const char *dir,colored_img_data_item *data) { - { "tab_b.gif", tab_b_gif, tab_b_gif_len }, - { "tab_l.gif", tab_l_gif, tab_l_gif_len }, - { "tab_r.gif", tab_r_gif, tab_r_gif_len }, - { "tabs.css", (unsigned char *)tabs_css, 0 }, - { 0, 0, 0 } + static int hue = Config_getInt("HTML_COLORSTYLE_HUE"); + static int sat = Config_getInt("HTML_COLORSTYLE_SAT"); + static int gamma = Config_getInt("HTML_COLORSTYLE_GAMMA"); + while (data->name) + { + QCString fileName; + fileName=(QCString)dir+"/"+data->name; + QFile f(fileName); + if (f.open(IO_WriteOnly)) + { + ColoredImage img(data->width,data->height,data->content,data->alpha, + sat,hue,gamma); + img.save(fileName); + } + else + { + fprintf(stderr,"Warning: Cannot open file %s for writing\n",data->name); + } + data++; + } +} + +static colored_img_data_item colored_tab_data[] = +{ + { "tab_a.png", 1, 36, tab_a_png, 0 }, + { "tab_b.png", 1, 36, tab_b_png, 0 }, + { "tab_h.png", 1, 36, tab_h_png, 0 }, + { "tab_s.png", 1, 36, tab_s_png, 0 }, + { "bc_s.png", 8, 32, bc_s_png, bc_s_a_png }, + { "doxygen.png", 104,31, doxygen_png, doxygen_a_png }, + { "closed.png", 9, 9, closed_png, closed_a_png }, + { "open.png", 9, 9, open_png, open_a_png }, + { 0, 0, 0, 0, 0 } }; static void writeTabData(const char *dir) { - writeImgData(dir,tab_data); + writeColoredImgData(dir,colored_tab_data); } static img_data_item search_client_data[] = { - { "search.png", search_sel_png, search_sel_png_len }, - { "close.png", close_png, close_png_len }, + { "mag_sel.png", mag_sel_png, mag_sel_png_len }, + { "search_l.png", search_l_png, search_l_png_len }, + { "search_m.png", search_m_png, search_m_png_len }, + { "search_r.png", search_r_png, search_r_png_len }, + { "close.png", close_png, close_png_len }, { 0, 0, 0 } }; static img_data_item search_server_data[] = { - { "search.png", search_png, search_png_len }, + { "mag.png", mag_png, mag_png_len }, + { "search_l.png", search_l_png, search_l_png_len }, + { "search_m.png", search_m_png, search_m_png_len }, + { "search_r.png", search_r_png, search_r_png_len }, { 0, 0, 0 } }; -void HtmlGenerator::writeSearchData(const char *dir) -{ - static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH"); - writeImgData(dir,serverBasedSearch ? search_server_data : search_client_data); - Doxygen::indexList.addImageFile("search/close.png"); - Doxygen::indexList.addImageFile("search/search.png"); -} - - //------------------------------------------------------------------------ -unsigned char open_gif[] = { - 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x09, 0x00, 0x09, 0x00, 0xf0, 0x00, - 0x00, 0x8e, 0xaf, 0xc4, 0x00, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, - 0x00, 0x02, 0x0d, 0x8c, 0x8f, 0xa9, 0xcb, 0xe0, 0xff, 0x02, 0x8c, 0x66, - 0x26, 0x7a, 0x51, 0x01, 0x00, 0x3b -}; -unsigned int open_gif_len = 54; - -unsigned char closed_gif[] = { - 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x09, 0x00, 0x09, 0x00, 0xf0, 0x00, - 0x00, 0x8e, 0xaf, 0xc4, 0x00, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, - 0x00, 0x02, 0x10, 0x8c, 0x03, 0xa7, 0x98, 0xcb, 0xad, 0x80, 0x84, 0x66, - 0xca, 0x38, 0x57, 0xd6, 0xf4, 0xd0, 0x02, 0x00, 0x3b -}; -unsigned int closed_gif_len = 57; - - +static QCString replaceColorMarkers(const char *str) +{ + QCString result; + QCString s=str; + if (s.isEmpty()) return result; + static QRegExp re("##[0-9A-Fa-f][0-9A-Fa-f]"); + static const char hex[] = "0123456789ABCDEF"; + static int hue = Config_getInt("HTML_COLORSTYLE_HUE"); + static int sat = Config_getInt("HTML_COLORSTYLE_SAT"); + static int gamma = Config_getInt("HTML_COLORSTYLE_GAMMA"); + int i,l,sl=s.length(),p=0; + while ((i=re.match(s,p,&l))!=-1) + { + result+=s.mid(p,i-p); + QCString lumStr = s.mid(i+2,l-2); +#define HEXTONUM(x) (((x)>='0' && (x)<='9') ? ((x)-'0') : \ + ((x)>='a' && (x)<='f') ? ((x)-'a'+10) : \ + ((x)>='A' && (x)<='F') ? ((x)-'A'+10) : 0) + + double r,g,b; + int red,green,blue; + int level = HEXTONUM(lumStr[0])*16+HEXTONUM(lumStr[1]); + ColoredImage::hsl2rgb(hue/360.0,sat/255.0, + pow(level/255.0,gamma/100.0),&r,&g,&b); + red = (int)(r*255.0); + green = (int)(g*255.0); + blue = (int)(b*255.0); + char colStr[8]; + colStr[0]='#'; + colStr[1]=hex[red>>4]; + colStr[2]=hex[red&0xf]; + colStr[3]=hex[green>>4]; + colStr[4]=hex[green&0xf]; + colStr[5]=hex[blue>>4]; + colStr[6]=hex[blue&0xf]; + colStr[7]=0; + //printf("replacing %s->%s (level=%d)\n",lumStr.data(),colStr,level); + result+=colStr; + p=i+l; + } + result+=s.right(sl-p); + return result; +} //------------------------- Pictures for the Tabs ------------------------ @@ -684,7 +791,7 @@ void HtmlGenerator::init() err("Could not create output directory %s\n",dname.data()); exit(1); } - writeLogo(dname); + //writeLogo(dname); if (!Config_getString("HTML_HEADER").isEmpty()) { g_header=fileToString(Config_getString("HTML_HEADER")); @@ -697,13 +804,43 @@ void HtmlGenerator::init() } createSubDirs(d); + QCString fileName=dname+"/tabs.css"; + QFile f(fileName); + if (f.open(IO_WriteOnly)) + { + QTextStream t(&f); + t << replaceColorMarkers(tabs_css); + } + else + { + fprintf(stderr,"Warning: Cannot open file %s for writing\n",fileName.data()); + } + writeTabData(dname); } +void HtmlGenerator::writeSearchData(const char *dir) +{ + static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH"); + writeImgData(dir,serverBasedSearch ? search_server_data : search_client_data); + Doxygen::indexList.addImageFile("search/close.png"); + Doxygen::indexList.addImageFile("search/search.png"); + QCString searchDirName = Config_getString("HTML_OUTPUT")+"/search"; + QFile f(searchDirName+"/search.css"); + if (f.open(IO_WriteOnly)) + { + QTextStream t(&f); + t << replaceColorMarkers(search_styleSheet); + } + Doxygen::indexList.addStyleSheetFile("search/search.css"); +} + + + void HtmlGenerator::writeStyleSheetFile(QFile &file) { QTextStream t(&file); - t << defaultStyleSheet; + t << replaceColorMarkers(defaultStyleSheet); } static void writeDefaultHeaderFile(QTextStream &t, const char *title, @@ -719,12 +856,12 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title, static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW"); static bool searchEngine = Config_getBool("SEARCHENGINE"); static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH"); - if (searchEngine && !generateTreeView) - { - t << "" << endl; - } -// t << "\n"; -// t << "\n"; + //if (searchEngine && !generateTreeView) + //{ + // t << "" << endl; + //} + // t << "\n"; + // t << "\n"; t << "\n"; t << "\n\n" "\n" @@ -786,10 +923,11 @@ void HtmlGenerator::writeHeaderFile(QFile &file) void HtmlGenerator::writeFooterFile(QFile &file) { QTextStream t(&file); - t << "
    \n"; + t.setEncoding(QTextStream::UnicodeUTF8); + t << "
    \n"; t << theTranslator->trGeneratedAt( "$datetime", "$projectname" ); t << " " - << "\"doxygen\"/" + << "\"doxygen\"/" << " $doxygenversion"; t << "
    \n" << "\n" @@ -809,10 +947,10 @@ static void generateDynamicSections(QTextStream &t,const QCString &relPath) " 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.gif';\n" + " button.src='" << relPath << "open.png';\n" " }else{\n" " sectionDiv.style.display='none';\n" - " button.src='" << relPath << "closed.gif';\n" + " button.src='" << relPath << "closed.png';\n" " }\n" "}\n" "function initDynSections(){\n" @@ -831,7 +969,7 @@ static void generateDynamicSections(QTextStream &t,const QCString &relPath) " header.style.cursor='pointer';\n" " header.onclick=changeDisplayState;\n" " header.id='dynheader'+sectionCounter;\n" - " button.src='" << relPath << "closed.gif';\n" + " button.src='" << relPath << "closed.png';\n" " section.id='dynsection'+sectionCounter;\n" " section.style.display='none';\n" " section.style.marginLeft='14px';\n" @@ -928,7 +1066,7 @@ static void writePageFooter(QTextStream &t,const QCString &lastTitle, } if (g_footer.isEmpty()) { - t << "
    "; + t << "
    "; if (timeStamp) { t << theTranslator->trGeneratedAt( @@ -996,7 +1134,7 @@ void HtmlGenerator::writeStyleInfo(int part) //t << "H1 { text-align: center; border-width: thin none thin none;" << endl; //t << " border-style : double; border-color : blue; padding-left : 1em; padding-right : 1em }" << endl; - t << defaultStyleSheet; + t << replaceColorMarkers(defaultStyleSheet); endPlainFile(); Doxygen::indexList.addStyleSheetFile("doxygen.css"); } @@ -1512,7 +1650,7 @@ void HtmlGenerator::endMemberSections() } } -void HtmlGenerator::startMemberHeader() +void HtmlGenerator::startMemberHeader(const char *anchor) { DBG_HTML(t << "" << endl) if (Config_getBool("HTML_ALIGN_MEMBERS")) @@ -1523,6 +1661,10 @@ void HtmlGenerator::startMemberHeader() { startGroupHeader(); } + if (anchor) + { + t << "" << endl; + } } void HtmlGenerator::endMemberHeader() @@ -1933,12 +2075,19 @@ void HtmlGenerator::printDoc(DocNode *n,const char *langExt) //---------------- helpers for index generation ----------------------------- -static void startQuickIndexList(QTextStream &t,bool compact) +static void startQuickIndexList(QTextStream &t,bool compact,bool topLevel=TRUE) { if (compact) { - t << "
    \n"; - t << "
      \n"; + if (topLevel) + { + t << "
      \n"; + } + else + { + t << "
      \n"; + } + t << "
        \n"; } else { @@ -2042,6 +2191,7 @@ static void renderQuickLinksAsTabs(QTextStream &t,const QCString &relPath, } if (hlEntry->parent() && hlEntry->parent()->children().count()>0) // draw tabs for row containing hlEntry { + bool topLevel = hlEntry->parent()->parent()==0; QListIterator li(hlEntry->parent()->children()); LayoutNavEntry *entry; @@ -2052,7 +2202,7 @@ static void renderQuickLinksAsTabs(QTextStream &t,const QCString &relPath, } if (count>0) // at least one item is visible { - startQuickIndexList(t,TRUE); + startQuickIndexList(t,TRUE,topLevel); for (li.toFirst();(entry=li.current());++li) { if (entry->visible() && quickLinkVisible(entry->kind())) @@ -2099,35 +2249,40 @@ static void renderQuickLinksAsTabs(QTextStream &t,const QCString &relPath, { if (!serverBasedSearch) // pure client side search { - t << "
      • \n"; + t << "
      • \n"; t << "
        \n"; - t << " \"\"/\n"; - t << " \n"; + t << " \"\"/\n"; + t << " trSearch() << "\" accesskey=\"S\"\n"; - t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n"; - t << " onblur=\"searchBox.OnSearchFieldFocus(false)\" \n"; - t << " onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>\n"; - t << " " + t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n"; + t << " onblur=\"searchBox.OnSearchFieldFocus(false)\" \n"; + t << " onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>\n"; + t << " \n"; + t << " " << "\"\"/\n"; + t << " \n"; t << "
        \n"; t << "
      • \n"; } else if (!generateTreeView) // server based search { - t << "
      • \n"; + t << "
      • \n"; t << "
        \n"; - t << "
        \n"; - t << " \"\"/\n"; + t << " \n"; + t << " \n"; + t << " \"\"/\n"; if (!highlightSearch) { - t << " trSearch() << "\" size=\"20\" accesskey=\"S\" \n"; - t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n"; - t << " onblur=\"searchBox.OnSearchFieldFocus(false)\"/>\n"; - t << " \n"; + t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n"; + t << " onblur=\"searchBox.OnSearchFieldFocus(false)\"/>\n"; + t << " \n"; + t << "
        \n"; t << "
        \n"; t << "
      • \n"; } @@ -2298,10 +2453,11 @@ void HtmlGenerator::writeSearchPage() if (!generateTreeView) { t << " echo \"" - << " \\n" - << " \\n" + << " \\n" + << " \\n" << "
      \\n" << " \\n" << "
    \\n" @@ -2359,27 +2515,29 @@ void HtmlGenerator::writeSearchPage() } } +#if 0 void HtmlGenerator::generateSectionImages() { { - QCString fileName = Config_getString("HTML_OUTPUT")+"/open.gif"; + QCString fileName = Config_getString("HTML_OUTPUT")+"/open.png"; QFile f(fileName); if (f.open(IO_WriteOnly)) { f.writeBlock((char*)open_gif,open_gif_len); } - Doxygen::indexList.addImageFile("open.gif"); + Doxygen::indexList.addImageFile("open.png"); } { - QCString fileName = Config_getString("HTML_OUTPUT")+"/closed.gif"; + QCString fileName = Config_getString("HTML_OUTPUT")+"/closed.png"; QFile f(fileName); if (f.open(IO_WriteOnly)) { f.writeBlock((char*)closed_gif,closed_gif_len); } - Doxygen::indexList.addImageFile("closed.gif"); + Doxygen::indexList.addImageFile("closed.png"); } } +#endif void HtmlGenerator::startConstraintList(const char *header) { @@ -2437,3 +2595,25 @@ void HtmlGenerator::lineBreak(const char *style) } } +void HtmlGenerator::startHeaderSection() +{ + t << "
    " << endl; +} + +void HtmlGenerator::startTitleHead(const char *) +{ + t << "
    " << endl; + startTitle(); +} + +void HtmlGenerator::endTitleHead(const char *,const char *) +{ + endTitle(); + t << "
    " << endl; +} + +void HtmlGenerator::endHeaderSection() +{ + t << "
    " << endl; +} + diff --git a/src/htmlgen.h b/src/htmlgen.h index 9eedae1..32964bf 100644 --- a/src/htmlgen.h +++ b/src/htmlgen.h @@ -59,8 +59,8 @@ class HtmlGenerator : public OutputGenerator void startProjectNumber(); void endProjectNumber(); void writeStyleInfo(int part); - void startTitleHead(const char *) { startTitle(); } - void endTitleHead(const char *,const char *) { endTitle(); } + void startTitleHead(const char *); + void endTitleHead(const char *,const char *); void startTitle() { t << "

    "; } void endTitle() { t << "

    "; } @@ -99,7 +99,9 @@ class HtmlGenerator : public OutputGenerator void startMemberSections(); void endMemberSections(); - void startMemberHeader(); + void startHeaderSection(); + void endHeaderSection(); + void startMemberHeader(const char *); void endMemberHeader(); void startMemberSubtitle(); void endMemberSubtitle(); @@ -247,7 +249,7 @@ class HtmlGenerator : public OutputGenerator static void writeSearchFooter(QTextStream &t,const QCString &relPath); static void writeSearchData(const char *dir); - static void generateSectionImages(); + //static void generateSectionImages(); private: QCString lastTitle; diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp index bbab996..8362519 100644 --- a/src/htmlhelp.cpp +++ b/src/htmlhelp.cpp @@ -506,9 +506,15 @@ void HtmlHelp::createProjectFile() s = indexFiles.next(); } t << "tabs.css" << endl; +#if 0 t << "tab_b.gif" << endl; t << "tab_l.gif" << endl; t << "tab_r.gif" << endl; +#endif + t << "tab_a.png" << endl; + t << "tab_b.png" << endl; + t << "tab_h.png" << endl; + t << "tab_s.png" << endl; if (Config_getBool("HTML_DYNAMIC_SECTIONS")) { t << "open.gif" << endl; diff --git a/src/image.cpp b/src/image.cpp index d63e14c..66c281c 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -21,6 +21,7 @@ //#include "gifenc.h" #include #include "lodepng.h" +#include typedef unsigned char Byte; @@ -393,3 +394,118 @@ bool Image::save(const char *fileName,int mode) return TRUE; } +//---------------------------------------------------------------- + +void ColoredImage::hsl2rgb(double h,double s,double l, + double *pRed,double *pGreen,double *pBlue) +{ + double v; + double r,g,b; + + r = l; // default to gray + g = l; + b = l; + v = (l <= 0.5) ? (l * (1.0 + s)) : (l + s - l * s); + if (v > 0) + { + double m; + double sv; + int sextant; + double fract, vsf, mid1, mid2; + + m = l + l - v; + sv = (v - m ) / v; + h *= 6.0; + sextant = (int)h; + fract = h - sextant; + vsf = v * sv * fract; + mid1 = m + vsf; + mid2 = v - vsf; + switch (sextant) + { + case 0: + r = v; + g = mid1; + b = m; + break; + case 1: + r = mid2; + g = v; + b = m; + break; + case 2: + r = m; + g = v; + b = mid1; + break; + case 3: + r = m; + g = mid2; + b = v; + break; + case 4: + r = mid1; + g = m; + b = v; + break; + case 5: + r = v; + g = m; + b = mid2; + break; + } + } + *pRed = r; + *pGreen = g; + *pBlue = b; +} + +ColoredImage::ColoredImage(int width,int height, + const uchar *greyLevels,const uchar *alphaLevels, + int saturation,int hue,int gamma) +{ + m_hasAlpha = alphaLevels!=0; + m_width = width; + m_height = height; + m_data = (uchar*)malloc(width*height*4); + int i; + for (i=0;i\n"); - ol.writeString("
      \n"); + if (letterTabs) + { + ol.writeString("
      \n"); + } + else + { + ol.writeString("
      \n"); + } + ol.writeString("
        \n"); } else { @@ -267,8 +270,10 @@ static QCString fixSpaces(const QCString &s) } -void startTitle(OutputList &ol,const char *fileName) +void startTitle(OutputList &ol,const char *fileName,Definition *def) { + ol.startHeaderSection(); + if (def) def->writeSummaryLinks(ol); ol.startTitleHead(fileName); ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); @@ -278,6 +283,7 @@ void endTitle(OutputList &ol,const char *fileName,const char *name) { ol.popGeneratorState(); ol.endTitleHead(fileName,name); + ol.endHeaderSection(); } void startFile(OutputList &ol,const char *name,const char *manName, @@ -291,14 +297,14 @@ void startFile(OutputList &ol,const char *name,const char *manName, if (!additionalIndices) { ol.endQuickIndices(); - ol.startContents(); + //ol.startContents(); } } else { if (!additionalIndices) { - ol.startContents(); + // ol.startContents(); } } } @@ -689,6 +695,7 @@ void writeHierarchicalIndex(OutputList &ol) //} ol.parseText(title); endTitle(ol,0,0); + ol.startContents(); ol.startTextBlock(); Doxygen::indexList.addContentsItem(TRUE,title,0,"hierarchy",0); if (Config_getBool("HAVE_DOT") && Config_getBool("GRAPHICAL_HIERARCHY")) @@ -742,6 +749,7 @@ void writeGraphicalClassHierarchy(OutputList &ol) //} ol.parseText(title); endTitle(ol,0,0); + ol.startContents(); ol.startTextBlock(); Doxygen::indexList.addContentsItem(FALSE,theTranslator->trGraphicalHierarchy(),0,"inherits",0); ol.startParagraph(); @@ -807,6 +815,7 @@ void writeFileIndex(OutputList &ol) //} ol.parseText(title); endTitle(ol,0,0); + ol.startContents(); ol.startTextBlock(); Doxygen::indexList.addContentsItem(TRUE,theTranslator->trFileList(),0,"files",0); Doxygen::indexList.incContentsDepth(); @@ -992,6 +1001,7 @@ void writeNamespaceIndex(OutputList &ol) //} ol.parseText(longTitle); endTitle(ol,0,0); + ol.startContents(); ol.startTextBlock(); Doxygen::indexList.addContentsItem(TRUE,title,0,"namespaces",0); Doxygen::indexList.incContentsDepth(); @@ -1433,6 +1443,7 @@ void writeAlphabeticalIndex(OutputList &ol) theTranslator->trCompoundIndex() )); endTitle(ol,0,0); + ol.startContents(); writeAlphabeticalClassList(ol); endFile(ol); ol.popGeneratorState(); @@ -1460,6 +1471,7 @@ void writeAnnotatedIndex(OutputList &ol) //} ol.parseText(longTitle); endTitle(ol,0,0); + ol.startContents(); ol.startTextBlock(); Doxygen::indexList.addContentsItem(TRUE,title,0,"annotated",0); Doxygen::indexList.incContentsDepth(); @@ -1834,7 +1846,7 @@ void writeQuickMemberIndex(OutputList &ol, { bool first=TRUE; int i; - startQuickIndexList(ol); + startQuickIndexList(ol,TRUE); for (i=33;i<127;i++) { char is[2];is[0]=(char)i;is[1]='\0'; @@ -2899,18 +2911,6 @@ void writeJavascriptSearchIndex() Doxygen::indexList.addStyleSheetFile("search/search.js"); } -void writeSearchStyleSheet() -{ - QCString searchDirName = Config_getString("HTML_OUTPUT")+"/search"; - QFile f(searchDirName+"/search.css"); - if (f.open(IO_WriteOnly)) - { - QTextStream t(&f); - t << search_styleSheet; - } - Doxygen::indexList.addStyleSheetFile("search/search.css"); -} - void writeSearchCategories(QTextStream &t) { static SearchIndexCategoryMapping map; @@ -2945,6 +2945,7 @@ void writeExampleIndex(OutputList &ol) //} ol.parseText(title); endTitle(ol,0,0); + ol.startContents(); ol.startTextBlock(); Doxygen::indexList.addContentsItem(TRUE,theTranslator->trExamples(),0,"examples",0); Doxygen::indexList.incContentsDepth(); @@ -3042,6 +3043,7 @@ void writePageIndex(OutputList &ol) //} ol.parseText(title); endTitle(ol,0,0); + ol.startContents(); ol.startTextBlock(); //Doxygen::indexList.addContentsItem(TRUE,theTranslator->trRelatedPages(),0,"pages",0); //Doxygen::indexList.incContentsDepth(); @@ -3134,6 +3136,7 @@ void writeGraphInfo(OutputList &ol) startTitle(ol,0); ol.parseText(theTranslator->trLegendTitle()); endTitle(ol,0,0); + ol.startContents(); bool &stripCommentsStateRef = Config_getBool("STRIP_CODE_COMMENTS"); bool oldStripCommentsState = stripCommentsStateRef; // temporarily disable the stripping of comments for our own code example! @@ -3503,6 +3506,7 @@ void writeGroupIndex(OutputList &ol) //} ol.parseText(title); endTitle(ol,0,0); + ol.startContents(); ol.startTextBlock(); Doxygen::indexList.addContentsItem(TRUE,theTranslator->trModules(),0,"modules",0); Doxygen::indexList.incContentsDepth(); @@ -3549,6 +3553,7 @@ void writeDirIndex(OutputList &ol) //} ol.parseText(title); endTitle(ol,0,0); + ol.startContents(); ol.startTextBlock(); Doxygen::indexList.addContentsItem(TRUE,theTranslator->trDirIndex(),0,"dirs",0); Doxygen::indexList.incContentsDepth(); @@ -3641,25 +3646,35 @@ void writeIndex(OutputList &ol) ol.writeQuickLinks(TRUE,HLI_Main); ol.endQuickIndices(); } - ol.startContents(); - ol.startTitleHead(0); + bool headerWritten=FALSE; if (Doxygen::mainPage && !Doxygen::mainPage->title().isEmpty()) { if (Doxygen::mainPage->title().lower()!="notitle") { + ol.startHeaderSection(); + ol.startTitleHead(0); ol.parseDoc(Doxygen::mainPage->docFile(),Doxygen::mainPage->docLine(), Doxygen::mainPage,0,Doxygen::mainPage->title(), TRUE,FALSE,0,TRUE,FALSE); + headerWritten = TRUE; } } else { if (!Config_getString("PROJECT_NAME").isEmpty()) { + ol.startHeaderSection(); + ol.startTitleHead(0); ol.parseText(projPrefix+theTranslator->trDocumentation()); + headerWritten = TRUE; } } - ol.endTitleHead(0,0); + if (headerWritten) + { + ol.endTitleHead(0,0); + ol.endHeaderSection(); + } + ol.startContents(); // ol.newParagraph(); // FIXME:PARA if (!Config_getString("PROJECT_NUMBER").isEmpty()) { @@ -3883,6 +3898,7 @@ void writeIndex(OutputList &ol) Doxygen::insideMainPage=TRUE; ol.disable(OutputGenerator::Man); startFile(ol,Doxygen::mainPage->name(),0,Doxygen::mainPage->title()); + ol.startContents(); ol.startTextBlock(); ol.parseDoc(defFileName,defLine,Doxygen::mainPage,0, Doxygen::mainPage->documentation(),FALSE,FALSE diff --git a/src/index.h b/src/index.h index 7f387fc..065bfff 100644 --- a/src/index.h +++ b/src/index.h @@ -252,7 +252,7 @@ extern int documentedHtmlFiles; extern int documentedPages; extern int documentedDirs; -void startTitle(OutputList &ol,const char *fileName); +void startTitle(OutputList &ol,const char *fileName,Definition *def=0); void endTitle(OutputList &ol,const char *fileName,const char *name); void startFile(OutputList &ol,const char *name,const char *manName, const char *title,HighlightedItem hli=HLI_None, @@ -269,6 +269,5 @@ void addNamespaceMemberNameToIndex(MemberDef *md); // search engine void writeJavascriptSearchIndex(); void writeSearchCategories(QTextStream &t); -void writeSearchStyleSheet(); #endif diff --git a/src/language.cpp b/src/language.cpp index e7b5fef..840fece 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -205,7 +205,7 @@ bool setTranslator(const char *langName) #ifdef LANG_DE else if (L_EQUAL("german")) { - theTranslator=new TranslatorDecoder(new TranslatorGerman); + theTranslator=new TranslatorGerman; } #endif #ifdef LANG_JP @@ -241,7 +241,7 @@ bool setTranslator(const char *langName) #ifdef LANG_HR else if (L_EQUAL("croatian")) { - theTranslator=new TranslatorDecoder(new TranslatorCroatian); + theTranslator=new TranslatorCroatian; } #endif #ifdef LANG_PL diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp index 7a33288..d6d4437 100644 --- a/src/latexdocvisitor.cpp +++ b/src/latexdocvisitor.cpp @@ -1360,20 +1360,17 @@ void LatexDocVisitor::endDotFile(bool hasCaption) void LatexDocVisitor::writeMscFile(const QString &baseName) { + QString shortName = baseName; + int i; + if ((i=shortName.findRev('/'))!=-1) + { + shortName=shortName.right(shortName.length()-i-1); + } QString outDir = Config_getString("LATEX_OUTPUT"); writeMscGraphFromFile(baseName,outDir,baseName,MSC_EPS); m_t << "\n\\begin{DoxyImageNoCaption}" " \\mbox{\\includegraphics"; - //if (!width.isEmpty()) - //{ - // m_t << "[width=" << width << "]"; - //} - //else if (!height.isEmpty()) - //{ - // m_t << "[height=" << height << "]"; - //} - m_t << "{" << baseName << "}"; - + m_t << "{" << shortName << "}"; m_t << "}\n"; // end mbox m_t << "\\end{DoxyImageNoCaption}\n"; } diff --git a/src/latexgen.cpp b/src/latexgen.cpp index fc1f73c..6cd986e 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -1380,7 +1380,7 @@ void LatexGenerator::endGroupHeader() t << "}" << endl; } -void LatexGenerator::startMemberHeader() +void LatexGenerator::startMemberHeader(const char *) { if (Config_getBool("COMPACT_LATEX")) { diff --git a/src/latexgen.h b/src/latexgen.h index 8b7025a..9e0078f 100644 --- a/src/latexgen.h +++ b/src/latexgen.h @@ -97,7 +97,9 @@ class LatexGenerator : public OutputGenerator void startMemberSections() {} void endMemberSections() {} - void startMemberHeader(); + void startHeaderSection() {} + void endHeaderSection() {} + void startMemberHeader(const char *); void endMemberHeader(); void startMemberSubtitle() {} void endMemberSubtitle() {} diff --git a/src/logos.cpp b/src/logos.cpp index b148816..0657af3 100644 --- a/src/logos.cpp +++ b/src/logos.cpp @@ -21,7 +21,7 @@ #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, @@ -133,7 +133,6 @@ unsigned char doxygen_png_data[] = { }; unsigned int doxygen_png_len = 1281; -#if 0 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, @@ -2212,6 +2211,7 @@ unsigned char FreeSans_ttf[] = { }; unsigned int FreeSans_ttf_len = 22932; +#if 0 void writeLogo(const char *dir) { QCString fileName=(QCString)dir+"/doxygen.png"; @@ -2225,7 +2225,6 @@ void writeLogo(const char *dir) f.close(); } -#if 0 void writeSearchButton(const char *dir) { QCString fileName=(QCString)dir+"/search.png"; diff --git a/src/mangen.cpp b/src/mangen.cpp index f0e904a..12c4e2d 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -255,7 +255,7 @@ void ManGenerator::endGroupHeader() upperCase=FALSE; } -void ManGenerator::startMemberHeader() +void ManGenerator::startMemberHeader(const char *) { if (!firstCol) t << endl; t << ".SS \""; @@ -585,9 +585,9 @@ void ManGenerator::startSection(const char *,const char *,SectionInfo::SectionTy { case SectionInfo::Page: startGroupHeader(); break; case SectionInfo::Section: startGroupHeader(); break; - case SectionInfo::Subsection: startMemberHeader(); break; - case SectionInfo::Subsubsection: startMemberHeader(); break; - case SectionInfo::Paragraph: startMemberHeader(); break; + case SectionInfo::Subsection: startMemberHeader(0); break; + case SectionInfo::Subsubsection: startMemberHeader(0); break; + case SectionInfo::Paragraph: startMemberHeader(0); break; default: ASSERT(0); break; } } diff --git a/src/mangen.h b/src/mangen.h index 1da04eb..e855942 100644 --- a/src/mangen.h +++ b/src/mangen.h @@ -92,7 +92,9 @@ class ManGenerator : public OutputGenerator void endGroupHeader(); void startMemberSections() {} void endMemberSections() {} - void startMemberHeader(); + void startHeaderSection() {} + void endHeaderSection() {} + void startMemberHeader(const char *); void endMemberHeader(); void insertMemberAlign(bool) {} void startMemberSubtitle() {} diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 3c16df0..17eb795 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -630,6 +630,7 @@ MemberDef::MemberDef(const char *df,int dl, const ArgumentList *tal,const ArgumentList *al ) : Definition(df,dl,removeRedundantWhiteSpace(na)) { + //printf("MemberDef::MemberDef(%s)\n",na); m_storagePos=-1; m_cacheHandle=-1; m_impl = new MemberDefImpl; @@ -1980,7 +1981,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ParserInterface *pIntf = Doxygen::parserManager->getParser(getDefFileExtension()); pIntf->resetCodeParserState(); ol.startCodeFragment(); - pIntf->parseCode(ol,scopeName,m_impl->initializer,FALSE,0); + pIntf->parseCode(ol,scopeName,m_impl->initializer,FALSE,0,getFileDef(), + -1,-1,TRUE,this,FALSE); ol.endCodeFragment(); } diff --git a/src/memberlist.cpp b/src/memberlist.cpp index f22ea5d..379409c 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -182,6 +182,69 @@ MemberListIterator::MemberListIterator(const QList &l) : { } +bool MemberList::declVisible() const +{ + MemberListIterator mli(*this); + MemberDef *md; + for ( ; (md=mli.current()); ++mli ) + { + if (md->isBriefSectionVisible()) + { + switch (md->memberType()) + { + case MemberDef::Define: // fall through + case MemberDef::Typedef: // fall through + case MemberDef::Variable: // fall through + case MemberDef::Function: // fall through + case MemberDef::Signal: // fall through + case MemberDef::Slot: // fall through + case MemberDef::DCOP: // fall through + case MemberDef::Property: // fall through + case MemberDef::Event: + return TRUE; + case MemberDef::Enumeration: + { + int enumVars=0; + MemberListIterator vmli(*this); + MemberDef *vmd; + QCString name(md->name()); + int i=name.findRev("::"); + if (i!=-1) name=name.right(name.length()-i-2); // strip scope (TODO: is this needed?) + if (name[0]=='@') // anonymous enum => append variables + { + for ( ; (vmd=vmli.current()) ; ++vmli) + { + QCString vtype=vmd->typeString(); + if ((vtype.find(name))!=-1) + { + enumVars++; + } + } + } + // if this is an anoymous enum and there are variables of this + // enum type (i.e. enumVars>0), then we do not show the enum here. + if (enumVars==0) // show enum here + { + return TRUE; + } + } + break; + case MemberDef::Friend: + return TRUE; + case MemberDef::EnumValue: + { + if (m_inGroup) + { + return TRUE; + } + } + break; + } + } + } + return FALSE; +} + void MemberList::writePlainDeclarations(OutputList &ol, ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd ) @@ -347,7 +410,7 @@ void MemberList::writeDeclarations(OutputList &ol, // this,title,subtitle,numDecMembers()); if (title) { - ol.startMemberHeader(); + ol.startMemberHeader(listTypeAsString()); ol.parseText(title); ol.endMemberHeader(); } @@ -459,6 +522,7 @@ void MemberList::writeDocumentationPage(OutputList &ol, QCString title=md->qualifiedName(); startFile(ol,diskName,md->name(),title); container->writeNavigationPath(ol); + ol.startContents(); ol.writeString("\n" " \n" @@ -615,6 +679,60 @@ void MemberList::unmarshal(StorageIntf *s) } } +QCString MemberList::listTypeAsString() const +{ + switch(m_listType) + { + case pubMethods: return "pub-methods"; + case proMethods: return "pro-methods"; + case pacMethods: return "pac-methods"; + case priMethods: return "pri-methods"; + case pubStaticMethods: return "pub-static-methods"; + case proStaticMethods: return "pro-static-methods"; + case pacStaticMethods: return "pac-static-methods"; + case priStaticMethods: return "pri-static-methods"; + case pubSlots: return "pub-slots"; + case proSlots: return "pro-slots"; + case priSlots: return "pri-slots"; + case pubAttribs: return "pub-attribs"; + case proAttribs: return "pro-attribs"; + case pacAttribs: return "pac-attribs"; + case priAttribs: return "pri-attribs"; + case pubStaticAttribs: return "pub-static-attribs"; + case proStaticAttribs: return "pro-static-attribs"; + case pacStaticAttribs: return "pac-static-attribs"; + case priStaticAttribs: return "pri-static-attribs"; + case pubTypes: return "pub-types"; + case proTypes: return "pro-types"; + case pacTypes: return "pac-types"; + case priTypes: return "pri-types"; + case related: return "related"; + case signals: return "signals"; + case friends: return "friends"; + case dcopMethods: return "dcop-methods"; + case properties: return "properties"; + case events: return "events"; + case decDefineMembers: return "define-members"; + case decProtoMembers: return "proto-members"; + case decTypedefMembers: return "typedef-members"; + case decEnumMembers: return "enum-members"; + case decFuncMembers: return "func-members"; + case decVarMembers: return "var-members"; + case decEnumValMembers: return "enumval-members"; + case decPubSlotMembers: return "pub-slot-members"; + case decProSlotMembers: return "pro-slot-members"; + case decPriSlotMembers: return "pri-slot-members"; + case decSignalMembers: return "signal-members"; + case decEventMembers: return "event-members"; + case decFriendMembers: return "friend-members"; + case decPropMembers: return "prop-members"; + case enumFields: return "enum-fields"; + case memberGroup: return "member-group"; + default: break; + } + return ""; +} + //-------------------------------------------------------------------------- int MemberSDict::compareItems(GCI item1, GCI item2) @@ -624,3 +742,4 @@ int MemberSDict::compareItems(GCI item1, GCI item2) return stricmp(c1->name(),c2->name()); } + diff --git a/src/memberlist.h b/src/memberlist.h index c38569b..de5e907 100644 --- a/src/memberlist.h +++ b/src/memberlist.h @@ -118,6 +118,7 @@ class MemberList : public QList MemberList(ListType lt); ~MemberList(); ListType listType() const { return m_listType; } + QCString listTypeAsString() const; bool insert(uint index,const MemberDef *md); void inSort(const MemberDef *md); void append(const MemberDef *md); @@ -143,6 +144,7 @@ class MemberList : public QList Definition *container,const char *title,bool showEnumValues=FALSE); void writeDocumentationPage(OutputList &ol, const char *scopeName, Definition *container); + bool declVisible() const; void addMemberGroup(MemberGroup *mg); void setInGroup(bool inGroup) { m_inGroup=inGroup; } void setInFile(bool inFile) { m_inFile=inFile; } diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index 5c73c70..ee0191c 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -372,6 +372,41 @@ void NamespaceDef::writeAuthorSection(OutputList &ol) ol.popGeneratorState(); } +void NamespaceDef::writeSummaryLinks(OutputList &ol) +{ + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + QListIterator eli( + LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace)); + LayoutDocEntry *lde; + bool first=TRUE; + for (eli.toFirst();(lde=eli.current());++eli) + { + if ((lde->kind()==LayoutDocEntry::NamespaceClasses && classSDict && classSDict->declVisible()) || + (lde->kind()==LayoutDocEntry::NamespaceNestedNamespaces && namespaceSDict && namespaceSDict->declVisible()) + ) + { + LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde; + QCString label = lde->kind()==LayoutDocEntry::NamespaceClasses ? "nested-classes" : "namespaces"; + writeSummaryLink(ol,label,ls->title,first); + } + else if (lde->kind()== LayoutDocEntry::MemberDecl) + { + LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde; + MemberList * ml = getMemberList(lmd->type); + if (ml && ml->declVisible()) + { + writeSummaryLink(ol,ml->listTypeAsString(),lmd->title,first); + } + } + } + if (!first) + { + ol.writeString(" \n"); + } + ol.popGeneratorState(); +} + void NamespaceDef::writeDocumentation(OutputList &ol) { bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN"); @@ -395,11 +430,11 @@ void NamespaceDef::writeDocumentation(OutputList &ol) writeNavigationPath(ol); } ol.endQuickIndices(); - ol.startContents(); - startTitle(ol,getOutputFileBase()); + startTitle(ol,getOutputFileBase(),this); ol.parseText(pageTitle); addGroupListToTitle(ol,this); endTitle(ol,getOutputFileBase(),displayName()); + ol.startContents(); if (Doxygen::searchIndex) { @@ -730,6 +765,20 @@ void NamespaceDef::combineUsingRelations() } } +bool NamespaceSDict::declVisible() const +{ + SDict::Iterator ni(*this); + NamespaceDef *nd; + for (ni.toFirst();(nd=ni.current());++ni) + { + if (nd->isLinkable()) + { + return TRUE; + } + } + return FALSE; +} + void NamespaceSDict::writeDeclaration(OutputList &ol,const char *title,bool localName) { if (count()==0) return; // no namespaces in the list @@ -744,7 +793,7 @@ void NamespaceSDict::writeDeclaration(OutputList &ol,const char *title,bool loca if (!found) return; // no linkable namespaces in the list // write list of namespaces - ol.startMemberHeader(); + ol.startMemberHeader("namespaces"); bool javaOpt = Config_getBool("OPTIMIZE_OUTPUT_JAVA"); bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN"); #if 0 diff --git a/src/namespacedef.h b/src/namespacedef.h index 029698d..f5dda20 100644 --- a/src/namespacedef.h +++ b/src/namespacedef.h @@ -102,6 +102,7 @@ class NamespaceDef : public Definition void writeAuthorSection(OutputList &ol); void startMemberDocumentation(OutputList &ol); void endMemberDocumentation(OutputList &ol); + void writeSummaryLinks(OutputList &ol); QCString fileName; QStrList files; @@ -156,6 +157,7 @@ class NamespaceSDict : public SDict ); } void writeDeclaration(OutputList &ol,const char *title,bool localName=FALSE); + bool declVisible() const; }; diff --git a/src/outputgen.h b/src/outputgen.h index ace673a..3331231 100644 --- a/src/outputgen.h +++ b/src/outputgen.h @@ -325,7 +325,9 @@ class OutputGenerator : public BaseOutputDocInterface virtual void endGroupHeader() = 0; virtual void startMemberSections() = 0; virtual void endMemberSections() = 0; - virtual void startMemberHeader() = 0; + virtual void startHeaderSection() = 0; + virtual void endHeaderSection() = 0; + virtual void startMemberHeader(const char *anchor) = 0; virtual void endMemberHeader() = 0; virtual void startMemberSubtitle() = 0; virtual void endMemberSubtitle() = 0; diff --git a/src/outputlist.h b/src/outputlist.h index 659864f..fd5b5d7 100644 --- a/src/outputlist.h +++ b/src/outputlist.h @@ -171,8 +171,12 @@ class OutputList : public OutputDocInterface { forall(&OutputGenerator::startMemberSections); } void endMemberSections() { forall(&OutputGenerator::endMemberSections); } - void startMemberHeader() - { forall(&OutputGenerator::startMemberHeader); } + void startHeaderSection() + { forall(&OutputGenerator::startHeaderSection); } + void endHeaderSection() + { forall(&OutputGenerator::endHeaderSection); } + void startMemberHeader(const char *anchor) + { forall(&OutputGenerator::startMemberHeader,anchor); } void endMemberHeader() { forall(&OutputGenerator::endMemberHeader); } void startMemberSubtitle() diff --git a/src/pagedef.cpp b/src/pagedef.cpp index 3023ed8..607fa1d 100644 --- a/src/pagedef.cpp +++ b/src/pagedef.cpp @@ -96,7 +96,6 @@ void PageDef::writeDocumentation(OutputList &ol) } ol.endQuickIndices(); - ol.startContents(); // save old generator state and write title only to Man generator ol.pushGeneratorState(); @@ -116,13 +115,16 @@ void PageDef::writeDocumentation(OutputList &ol) if (!title().isEmpty() && !name().isEmpty() && (si=Doxygen::sectionDict.find(name()))!=0) { - ol.startSection(si->label,si->title,si->type); + //ol.startSection(si->label,si->title,si->type); + startTitle(ol,getOutputFileBase(),this); ol.parseDoc(docFile(),docLine(),this,0,si->title,TRUE,FALSE,0,TRUE,FALSE); //stringToSearchIndex(getOutputFileBase(), // theTranslator->trPage(TRUE,TRUE)+" "+si->title, // si->title); - ol.endSection(si->label,si->type); + //ol.endSection(si->label,si->type); + endTitle(ol,getOutputFileBase(),name()); } + ol.startContents(); ol.popGeneratorState(); //2.} diff --git a/src/parserintf.h b/src/parserintf.h index 602e40c..a7568fb 100644 --- a/src/parserintf.h +++ b/src/parserintf.h @@ -68,6 +68,8 @@ class ParserInterface * @param[in] memberDef Member definition to which the code * is associated (non null in case of an inline fragment * for a member). + * @param[in] showLineNumbers if set to TRUE and also fileDef is not 0, + * line numbers will be added to the source fragement */ virtual void parseCode(CodeOutputInterface &codeOutIntf, const char *scopeName, @@ -78,7 +80,8 @@ class ParserInterface int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, - MemberDef *memberDef=0 + MemberDef *memberDef=0, + bool showLineNumbers=TRUE ) = 0; /** Resets the state of the code parser. diff --git a/src/pre.l b/src/pre.l index 6eb2794..1ee4fbe 100644 --- a/src/pre.l +++ b/src/pre.l @@ -53,7 +53,8 @@ struct FileState { - FileState(int size) : fileBuf(size), oldFileBuf(0), oldFileBufPos(0),fileDef(0) {} + FileState(int size) : fileBuf(size), + oldFileBuf(0), oldFileBufPos(0) {} int lineNr; //FILE *filePtr; BufStr fileBuf; @@ -63,7 +64,6 @@ struct FileState //bool isPlainFile; YY_BUFFER_STATE bufState; QCString fileName; - FileDef *fileDef; }; /* ----------------------------------------------------------------- @@ -122,23 +122,14 @@ DefineDict* getFileDefineDict() return g_fileDefineDict; } -#if 0 static void setFileName(const char *name) { bool ambig; QFileInfo fi(name); g_yyFileName=convertToQCString(fi.absFilePath()); g_yyFileDef=findFileDef(Doxygen::inputNameDict,g_yyFileName,ambig); - if (g_yyFileDef && g_yyFileDef->isReference()) g_yyFileDef=0; - g_insideCS = g_yyFileName.right(3)==".cs"; -} -#endif - -static void setFileName(FileState *fs) -{ - g_yyFileName=fs->fileName; - g_yyFileDef=fs->fileDef; - //printf("^^ setFileName: %s->%p\n",g_yyFileName.data(),g_yyFileDef); + //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; g_insideCS = g_yyFileName.right(3)==".cs"; } @@ -195,6 +186,10 @@ static bool macroIsAccessible(Define *def) //printf("%s: predefined macro %s\n",g_inputFileDef->name().data(),def->name.data()); return TRUE; } + if (def && def->fileDef==g_inputFileDef) + { + return def->lineNrfileDef) // check if g_inputFileDef actually includes def->fileDef { QDict includedFiles(257); @@ -281,8 +276,6 @@ static FileState *checkAndOpenFile(const QCString &fileName,bool &alreadyInclude { fs->oldFileBuf = g_inputBuf; fs->oldFileBufPos = g_inputBufPos; - fs->fileDef = g_yyFileDef; - fs->fileName = g_yyFileName; } } return fs; @@ -300,7 +293,7 @@ static FileState *findFile(const char *fileName,bool localInclude,bool &alreadyI FileState *fs = checkAndOpenFile(absName,alreadyIncluded); if (fs) { - setFileName(fs); + setFileName(absName); g_yyLineNr=1; return fs; } @@ -321,7 +314,7 @@ static FileState *findFile(const char *fileName,bool localInclude,bool &alreadyI FileState *fs = checkAndOpenFile(absName,alreadyIncluded); if (fs) { - setFileName(fs); + setFileName(absName); g_yyLineNr=1; return fs; } @@ -1155,6 +1148,7 @@ void addDefine() } md->setInitializer(g_defLitText.stripWhiteSpace()); + //printf("pre.l: md->setFileDef(%p)\n",g_inputFileDef); md->setFileDef(g_inputFileDef); md->setDefinition("#define "+g_defName); @@ -1206,7 +1200,7 @@ static void readIncludeFile(const QCString &inc) // extract include path+name QCString incFileName=inc.mid(s,i-s).stripWhiteSpace(); - QCString oldFileName = g_yyFileName.copy(); + QCString oldFileName = g_yyFileName; FileDef *oldFileDef = g_yyFileDef; int oldLineNr = g_yyLineNr; //printf("Searching for `%s'\n",incFileName.data()); @@ -1237,7 +1231,6 @@ static void readIncludeFile(const QCString &inc) fs->bufState = YY_CURRENT_BUFFER; fs->lineNr = oldLineNr; fs->fileName = oldFileName; - fs->fileDef = oldFileDef; // push the state on the stack g_includeStack.push(fs); // set the scanner to the include file @@ -1249,10 +1242,8 @@ static void readIncludeFile(const QCString &inc) outputArray(lineStr.data(),lineStr.length()); //fprintf(stderr,"Switching to include file %s\n",incFileName.data()); - //preYYin=fs->filePtr; - //yy_switch_to_buffer(yy_create_buffer(preYYin, YY_BUF_SIZE)); g_expectGuard=TRUE; - g_inputBuf=&fs->fileBuf; + g_inputBuf = &fs->fileBuf; g_inputBufPos=0; yy_switch_to_buffer(yy_create_buffer(0, YY_BUF_SIZE)); } @@ -1349,16 +1340,6 @@ static char resolveTrigraph(char c) static int yyread(char *buf,int max_size) { -#if 0 - int len = fread( buf, 1, max_size, preYYin ); - if (len==0 && ferror( yyin )) - { - yy_fatal_error( "input in flex scanner failed" ); - return len; - } - return filterCRLF(buf,len); -#endif - int bytesInBuf = g_inputBuf->curPos()-g_inputBufPos; int bytesToCopy = QMIN(max_size,bytesInBuf); memcpy(buf,g_inputBuf->data()+g_inputBufPos,bytesToCopy); @@ -1952,32 +1933,10 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) else // define is a guard => hide { //printf("Found a guard %s\n",yytext); -#if 0 - Define *def=g_fileDefineDict->find(g_defName); - if (def==0) // new define name for this file - { - g_fileDefineDict->insert(g_defName,newDefine()); - } - else // name already exists - { - if (def->undef) // undefined name - { - def->undef = FALSE; - def->name = g_defName; - def->definition = g_defText.stripWhiteSpace(); - def->nargs = g_defArgs; - def->fileName = g_yyFileName.copy(); - def->lineNr = g_yyLineNr; - } - else - { - //printf("Error: define %s is defined more than once!\n",g_defName.data()); - } - } -#endif g_lastGuardName.resize(0); BEGIN(Start); } + g_expectGuard=FALSE; } ","{B}* { g_defArgsStr+=yytext; } "("{B}* { g_defArgsStr+=yytext; } @@ -2020,14 +1979,14 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) g_insideComment=FALSE; } */ -"/*" { +"/*"[!*]? { g_defText+=yytext; g_defLitText+=yytext; g_lastCContext=YY_START; g_commentCount=1; BEGIN(CopyCComment); } -"//" { +"//"[!/]? { outputChar('/');outputChar('/'); g_lastCPPContext=YY_START; g_defLitText+=' '; @@ -2299,24 +2258,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) { FileState *fs=g_includeStack.pop(); //fileDefineCache->merge(g_yyFileName,fs->fileName); -#if 0 - if (fs->isPlainFile) - { - if (fs->filePtr && fclose(fs->filePtr)!=0) - { - err("Error: could not close file %s: %s\n",fs->fileName.data(),strerror(errno)); - } - fs->filePtr=0; - } - else - { - if (fs->filePtr && portable_pclose(fs->filePtr)!=0) - { - err("Error: could not close pipe: %s\n",strerror(errno)); - } - fs->filePtr=0; - } -#endif YY_BUFFER_STATE oldBuf = YY_CURRENT_BUFFER; yy_switch_to_buffer( fs->bufState ); yy_delete_buffer( oldBuf ); @@ -2324,7 +2265,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) //preYYin = fs->oldYYin; g_inputBuf = fs->oldFileBuf; g_inputBufPos = fs->oldFileBufPos; - setFileName(fs); + setFileName(fs->fileName); //fprintf(stderr,"######## FileName %s\n",g_yyFileName.data()); // Deal with file changes due to @@ -2442,18 +2383,11 @@ void initPreprocessor() { g_pathList = new QStrList; addSearchDir("."); - //defineNameList.setAutoDelete(TRUE); - //defineNameList.clear(); - //defineDict.clear(); - //fileDefineCache = new DefineCache(1009); g_expandedDict = new DefineDict(17); - //g_fileDefineDict = new DefineDict(1009); } void cleanUpPreprocessor() { - //delete fileDefineCache; - //delete g_fileDefineDict; g_fileDefineDict=0; delete g_expandedDict; g_expandedDict=0; delete g_pathList; g_pathList=0; } @@ -2474,8 +2408,6 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output) g_outputBuf=&output; g_includeStack.setAutoDelete(TRUE); g_includeStack.clear(); - //g_fileDefineDict->setAutoDelete(TRUE); - //g_fileDefineDict->clear(); g_expandedDict->setAutoDelete(FALSE); g_expandedDict->clear(); g_condStack.clear(); @@ -2595,38 +2527,10 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output) firstTime=FALSE; } -#if 0 - QCString inputFilter = getFileFilter(fileName); - if (inputFilter.isEmpty()) - { - preYYin = fopen(fileName,"r"); - if (!preYYin) - { - err("Error: could not open file %s\n",fileName); - return; - } - } - else - { - QCString cmd = inputFilter+" \""+fileName+"\""; - Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",cmd.data()); - preYYin = portable_popen(cmd,"r"); - if (!preYYin) - { - err("Error: could not execute filter %s\n",cmd.data()); - return; - } - } -#endif g_yyLineNr = 1; g_level = 0; g_ifcount = 0; - QFileInfo fi(fileName); - bool ambig; - g_yyFileName = convertToQCString(fi.absFilePath()); - g_yyFileDef = findFileDef(Doxygen::inputNameDict,g_yyFileName,ambig); - if (g_yyFileDef && g_yyFileDef->isReference()) g_yyFileDef=0; - g_insideCS = g_yyFileName.right(3)==".cs"; + setFileName(fileName); g_inputFileDef = g_yyFileDef; BEGIN( Start ); @@ -2638,13 +2542,6 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output) preYYlex(); g_lexInit=TRUE; -#if 0 - if (inputFilter.isEmpty()) - fclose(preYYin); - else - portable_pclose(preYYin); -#endif - if (Debug::isFlagSet(Debug::Preprocessor)) { char *orgPos=output.data()+orgOffset; diff --git a/src/pycode.h b/src/pycode.h index 6ff5450..79a11f5 100644 --- a/src/pycode.h +++ b/src/pycode.h @@ -35,7 +35,7 @@ class MemberDef; extern void parsePythonCode(CodeOutputInterface &,const char *,const QCString &, bool ,const char *,FileDef *fd=0, int startLine=-1,int endLine=-1,bool inlineFragment=FALSE, - MemberDef *memberDef=0); + MemberDef *memberDef=0,bool showLineNumbers=TRUE); extern void resetPythonCodeParserState(); #endif diff --git a/src/pycode.l b/src/pycode.l index c2a8ad1..79157a6 100644 --- a/src/pycode.l +++ b/src/pycode.l @@ -1394,7 +1394,7 @@ static void adjustScopesAndSuites(unsigned indentLength) void parsePythonCode(CodeOutputInterface &od,const char *className, const QCString &s,bool exBlock, const char *exName, FileDef *fd,int startLine,int endLine,bool inlineFragment, - MemberDef *) + MemberDef *,bool) { //printf("***parseCode()\n"); diff --git a/src/pyscanner.h b/src/pyscanner.h index a023d41..1ebf470 100644 --- a/src/pyscanner.h +++ b/src/pyscanner.h @@ -48,7 +48,8 @@ class PythonLanguageScanner : public ParserInterface int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, - MemberDef *memberDef=0 + MemberDef *memberDef=0, + bool showLineNumbers=TRUE ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/pyscanner.l b/src/pyscanner.l index 4c93f26..18d0872 100644 --- a/src/pyscanner.l +++ b/src/pyscanner.l @@ -1631,11 +1631,13 @@ void PythonLanguageScanner::parseCode(CodeOutputInterface &codeOutIntf, int startLine, int endLine, bool inlineFragment, - MemberDef *memberDef + MemberDef *memberDef, + bool showLineNumbers ) { ::parsePythonCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName, - fileDef,startLine,endLine,inlineFragment,memberDef); + fileDef,startLine,endLine,inlineFragment,memberDef, + showLineNumbers); } void PythonLanguageScanner::parsePrototype(const char *text) diff --git a/src/rtfgen.h b/src/rtfgen.h index 558e16e..a32a097 100644 --- a/src/rtfgen.h +++ b/src/rtfgen.h @@ -96,7 +96,9 @@ class RTFGenerator : public OutputGenerator void startMemberSections() {} void endMemberSections() {} - void startMemberHeader() { startGroupHeader(); } + void startHeaderSection() {} + void endHeaderSection() {} + void startMemberHeader(const char *) { startGroupHeader(); } void endMemberHeader() { endGroupHeader(); } void startMemberSubtitle(); void endMemberSubtitle(); diff --git a/src/scanner.h b/src/scanner.h index 75fd63b..8a3d8fb 100644 --- a/src/scanner.h +++ b/src/scanner.h @@ -43,7 +43,8 @@ class CLanguageScanner : public ParserInterface int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, - MemberDef *memberDef=0 + MemberDef *memberDef=0, + bool showLineNumbers=TRUE ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/scanner.l b/src/scanner.l index 590413d..cf1e2bb 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -2311,7 +2311,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) else { lastStringContext=YY_START; - current->initializer+=*yytext; + current->initializer=yytext; pCopyQuotedGString=¤t->initializer; BEGIN(CopyGString); } @@ -5750,11 +5750,13 @@ void CLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf, int startLine, int endLine, bool inlineFragment, - MemberDef *memberDef + MemberDef *memberDef, + bool showLineNumbers ) { ::parseCCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName, - fileDef,startLine,endLine,inlineFragment,memberDef); + fileDef,startLine,endLine,inlineFragment,memberDef, + showLineNumbers); } bool CLanguageScanner::needsPreprocessing(const QCString &extension) diff --git a/src/search.css b/src/search.css index 63b7f96..31cfb8d 100644 --- a/src/search.css +++ b/src/search.css @@ -1,48 +1,86 @@ /*---------------- Search Box */ + #FSearchBox { float: left; } + +#searchli { + float: right; + display: block; + width: 170px; + height: 36px; +} + #MSearchBox { - padding: 0px; - margin: 0px; - border: none; - border: 1px solid #84B0C7; - white-space: nowrap; - -moz-border-radius: 8px; - -webkit-border-top-left-radius: 8px; - -webkit-border-top-right-radius: 8px; - -webkit-border-bottom-left-radius: 8px; - -webkit-border-bottom-right-radius: 8px; + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102;*/ +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; } + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + #MSearchField { - font: 9pt Arial, Verdana, sans-serif; - color: #999999; - background-color: #FFFFFF; - font-style: normal; - cursor: text; - padding: 1px 1px; - margin: 0px 6px 0px 0px; - border: none; + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; outline: none; - vertical-align: middle; + font: 9pt Arial, Verdana, sans-serif; } -.MSearchBoxActive #MSearchField { - color: #000000; + +#FSearchBox #MSearchField { + margin-left:15px; } -#MSearchSelect { - float : none; - display : inline; - background : none; - font: 9pt Verdana, sans-serif; - border: none; - margin: 0px 0px 0px 6px; - vertical-align: middle; - padding: 0px 0px; + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; } #MSearchClose { - float : none; - display : none; + display: none; + position: absolute; + top: 4px; background : none; border: none; margin: 0px 4px 0px 0px; @@ -50,29 +88,16 @@ outline: none; } -#MSearchCloseImg { - vertical-align: middle; +.left #MSearchClose { + left: 6px; } -.MSearchBoxLeft { - display: block; - text-align: left; - float: left; - margin-left: 6px; -} -.MSearchBoxRight { - display: block; - float: right; - text-align: right; - margin-right: 6px; +.right #MSearchClose { + right: 2px; } -.MSearchBoxSpacer { - font-size: 0px; - clear: both; -} -.MSearchBoxRow { - font-size: 0px; - clear: both; + +.MSearchBoxActive #MSearchField { + color: #000000; } /*---------------- Search filter selection */ @@ -81,8 +106,8 @@ display: none; position: absolute; left: 0; top: 0; - border: 1px solid #A0A0A0; - background-color: #FAFAFA; + border: 1px solid ##A0; + background-color: ##FA; z-index: 1; padding-top: 4px; padding-bottom: 4px; @@ -92,19 +117,22 @@ -webkit-border-bottom-left-radius: 4px; -webkit-border-bottom-right-radius: 4px; -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - } +} + .SelectItem { font: 8pt Arial, Verdana, sans-serif; padding-left: 2px; padding-right: 12px; border: 0px; } + span.SelectionMark { margin-right: 4px; font-family: monospace; outline-style: none; text-decoration: none; } + a.SelectItem { display: block; outline-style: none; @@ -113,15 +141,17 @@ a.SelectItem { padding-left: 6px; padding-right: 12px; } + a.SelectItem:focus, a.SelectItem:active { color: #000000; outline-style: none; text-decoration: none; } + a.SelectItem:hover { color: #FFFFFF; - background-color: #2A50E4; + background-color: ##50; outline-style: none; text-decoration: none; cursor: pointer; @@ -133,14 +163,15 @@ a.SelectItem:hover { iframe#MSearchResults { width: 60ex; height: 15em; - } +} + #MSearchResultsWindow { display: none; position: absolute; left: 0; top: 0; - border: 1px solid #000000; - background-color: #EEF3F5; - } + border: 1px solid #000; + background-color: ##F0; +} /* ----------------------------------- */ @@ -154,10 +185,12 @@ iframe#MSearchResults { font-size: 10pt; padding-left: 1ex; } + .SRPage .SREntry { font-size: 8pt; padding: 1px 5px; } + body.SRPage { margin: 5px 2px; } @@ -165,11 +198,14 @@ body.SRPage { .SRChildren { padding-left: 3ex; padding-bottom: .5em } + .SRPage .SRChildren { display: none; } + .SRSymbol { - font-weight: bold; color: #153788; + font-weight: bold; + color: ##58; font-family: Arial, Verdana, sans-serif; text-decoration: none; outline: none; @@ -177,7 +213,7 @@ body.SRPage { a.SRScope { display: block; - color: #153788; + color: ##58; font-family: Arial, Verdana, sans-serif; text-decoration: none; outline: none; @@ -198,3 +234,7 @@ a.SRScope:focus, a.SRScope:active { display: none; } +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/src/search.js b/src/search.js index 8acef8c..a173d64 100644 --- a/src/search.js +++ b/src/search.js @@ -356,8 +356,8 @@ function SearchBox(name, resultsPath, inFrame, label) else { var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + domSearchBox.offsetHeight + 1; + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; domPopupSearchResultsWindow.style.display = 'block'; left -= domPopupSearchResults.offsetWidth; domPopupSearchResultsWindow.style.top = top + 'px'; diff --git a/src/search_css.h b/src/search_css.h index 3ee86b3..b0be070 100644 --- a/src/search_css.h +++ b/src/search_css.h @@ -1,48 +1,86 @@ "/*---------------- Search Box */\n" +"\n" "#FSearchBox {\n" " float: left;\n" "}\n" +"\n" +"#searchli {\n" +" float: right;\n" +" display: block;\n" +" width: 170px;\n" +" height: 36px;\n" +"}\n" +"\n" "#MSearchBox {\n" -" padding: 0px;\n" -" margin: 0px;\n" -" border: none;\n" -" border: 1px solid #84B0C7;\n" -" white-space: nowrap;\n" -" -moz-border-radius: 8px;\n" -" -webkit-border-top-left-radius: 8px;\n" -" -webkit-border-top-right-radius: 8px;\n" -" -webkit-border-bottom-left-radius: 8px;\n" -" -webkit-border-bottom-right-radius: 8px;\n" +" white-space : nowrap;\n" +" position: absolute;\n" +" float: none;\n" +" display: inline;\n" +" margin-top: 8px;\n" +" right: 0px;\n" +" width: 170px;\n" +" z-index: 102;*/\n" +"}\n" +"\n" +"#MSearchBox .left\n" +"{\n" +" display:block;\n" +" position:absolute;\n" +" left:10px;\n" +" width:20px;\n" +" height:19px;\n" +" background:url('search_l.png') no-repeat;\n" +" background-position:right;\n" "}\n" +"\n" +"#MSearchSelect {\n" +" display:block;\n" +" position:absolute;\n" +" width:20px;\n" +" height:19px;\n" +"}\n" +"\n" +".left #MSearchSelect {\n" +" left:4px;\n" +"}\n" +"\n" +".right #MSearchSelect {\n" +" right:5px;\n" +"}\n" +"\n" "#MSearchField {\n" -" font: 9pt Arial, Verdana, sans-serif;\n" -" color: #999999;\n" -" background-color: #FFFFFF;\n" -" font-style: normal;\n" -" cursor: text;\n" -" padding: 1px 1px;\n" -" margin: 0px 6px 0px 0px;\n" -" border: none;\n" +" display:block;\n" +" position:absolute;\n" +" height:19px;\n" +" background:url('search_m.png') repeat-x;\n" +" border:none;\n" +" width:116px;\n" +" margin-left:20px;\n" +" padding-left:4px;\n" +" color: #909090;\n" " outline: none;\n" -" vertical-align: middle;\n" +" font: 9pt Arial, Verdana, sans-serif;\n" "}\n" -".MSearchBoxActive #MSearchField {\n" -" color: #000000;\n" +"\n" +"#FSearchBox #MSearchField {\n" +" margin-left:15px;\n" "}\n" -"#MSearchSelect {\n" -" float : none;\n" -" display : inline;\n" -" background : none;\n" -" font: 9pt Verdana, sans-serif;\n" -" border: none;\n" -" margin: 0px 0px 0px 6px;\n" -" vertical-align: middle;\n" -" padding: 0px 0px;\n" +"\n" +"#MSearchBox .right {\n" +" display:block;\n" +" position:absolute;\n" +" right:10px;\n" +" top:0px;\n" +" width:20px;\n" +" height:19px;\n" +" background:url('search_r.png') no-repeat;\n" +" background-position:left;\n" "}\n" "\n" "#MSearchClose {\n" -" float : none;\n" -" display : none;\n" +" display: none;\n" +" position: absolute;\n" +" top: 4px;\n" " background : none;\n" " border: none;\n" " margin: 0px 4px 0px 0px;\n" @@ -50,29 +88,16 @@ " outline: none;\n" "}\n" "\n" -"#MSearchCloseImg {\n" -" vertical-align: middle;\n" +".left #MSearchClose {\n" +" left: 6px;\n" "}\n" "\n" -".MSearchBoxLeft {\n" -" display: block;\n" -" text-align: left;\n" -" float: left;\n" -" margin-left: 6px;\n" -"}\n" -".MSearchBoxRight {\n" -" display: block;\n" -" float: right;\n" -" text-align: right;\n" -" margin-right: 6px;\n" +".right #MSearchClose {\n" +" right: 2px;\n" "}\n" -".MSearchBoxSpacer {\n" -" font-size: 0px;\n" -" clear: both;\n" -"}\n" -".MSearchBoxRow {\n" -" font-size: 0px;\n" -" clear: both;\n" +"\n" +".MSearchBoxActive #MSearchField {\n" +" color: #000000;\n" "}\n" "\n" "/*---------------- Search filter selection */\n" @@ -81,8 +106,8 @@ " display: none;\n" " position: absolute;\n" " left: 0; top: 0;\n" -" border: 1px solid #A0A0A0;\n" -" background-color: #FAFAFA;\n" +" border: 1px solid ##A0;\n" +" background-color: ##FA;\n" " z-index: 1;\n" " padding-top: 4px;\n" " padding-bottom: 4px;\n" @@ -92,19 +117,22 @@ " -webkit-border-bottom-left-radius: 4px;\n" " -webkit-border-bottom-right-radius: 4px;\n" " -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n" -" }\n" +"}\n" +"\n" ".SelectItem {\n" " font: 8pt Arial, Verdana, sans-serif;\n" " padding-left: 2px;\n" " padding-right: 12px;\n" " border: 0px;\n" "}\n" +"\n" "span.SelectionMark {\n" " margin-right: 4px;\n" " font-family: monospace;\n" " outline-style: none;\n" " text-decoration: none;\n" "}\n" +"\n" "a.SelectItem {\n" " display: block;\n" " outline-style: none;\n" @@ -113,15 +141,17 @@ " padding-left: 6px;\n" " padding-right: 12px;\n" "}\n" +"\n" "a.SelectItem:focus,\n" "a.SelectItem:active {\n" " color: #000000; \n" " outline-style: none;\n" " text-decoration: none;\n" "}\n" +"\n" "a.SelectItem:hover {\n" " color: #FFFFFF;\n" -" background-color: #2A50E4;\n" +" background-color: ##50;\n" " outline-style: none;\n" " text-decoration: none;\n" " cursor: pointer;\n" @@ -133,14 +163,15 @@ "iframe#MSearchResults {\n" " width: 60ex;\n" " height: 15em;\n" -" }\n" +"}\n" +"\n" "#MSearchResultsWindow {\n" " display: none;\n" " position: absolute;\n" " left: 0; top: 0;\n" -" border: 1px solid #000000;\n" -" background-color: #EEF3F5;\n" -" }\n" +" border: 1px solid #000;\n" +" background-color: ##F0;\n" +"}\n" "\n" "/* ----------------------------------- */\n" "\n" @@ -154,10 +185,12 @@ " font-size: 10pt;\n" " padding-left: 1ex;\n" "}\n" +"\n" ".SRPage .SREntry {\n" " font-size: 8pt;\n" " padding: 1px 5px;\n" "}\n" +"\n" "body.SRPage {\n" " margin: 5px 2px;\n" "}\n" @@ -165,11 +198,14 @@ ".SRChildren {\n" " padding-left: 3ex; padding-bottom: .5em \n" "}\n" +"\n" ".SRPage .SRChildren {\n" " display: none;\n" "}\n" +"\n" ".SRSymbol {\n" -" font-weight: bold; color: #153788;\n" +" font-weight: bold; \n" +" color: ##58;\n" " font-family: Arial, Verdana, sans-serif;\n" " text-decoration: none;\n" " outline: none;\n" @@ -177,7 +213,7 @@ "\n" "a.SRScope {\n" " display: block;\n" -" color: #153788; \n" +" color: ##58; \n" " font-family: Arial, Verdana, sans-serif;\n" " text-decoration: none;\n" " outline: none;\n" @@ -198,3 +234,7 @@ " display: none;\n" "}\n" "\n" +"DIV.searchresults {\n" +" margin-left: 10px;\n" +" margin-right: 10px;\n" +"}\n" diff --git a/src/search_js.h b/src/search_js.h index b24b562..7bc4f16 100644 --- a/src/search_js.h +++ b/src/search_js.h @@ -356,8 +356,8 @@ " else\n" " {\n" " var domPopupSearchResults = this.DOMPopupSearchResults();\n" -" var left = getXPos(domSearchBox) + domSearchBox.offsetWidth;\n" -" var top = getYPos(domSearchBox) + domSearchBox.offsetHeight + 1;\n" +" var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;\n" +" var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;\n" " domPopupSearchResultsWindow.style.display = 'block';\n" " left -= domPopupSearchResults.offsetWidth;\n" " domPopupSearchResultsWindow.style.top = top + 'px';\n" diff --git a/src/translator_ca.h b/src/translator_ca.h index 4d22d77..db2ebf9 100644 --- a/src/translator_ca.h +++ b/src/translator_ca.h @@ -40,7 +40,7 @@ Translator class (by the local maintainer) when the localized translator is made up-to-date again. */ -class TranslatorCatalan : public TranslatorAdapter_1_6_0 +class TranslatorCatalan : public Translator { public: @@ -1783,6 +1783,40 @@ class TranslatorCatalan : public TranslatorAdapter_1_6_0 return "Restriccions de Tipus"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.6.0 (mainly for the new search engine) +////////////////////////////////////////////////////////////////////////// + + /*! directory relation for \a name */ + virtual QCString trDirRelation(const char *name) + { + return QCString(name)+" Relació"; + } + + /*! Loading message shown when loading search results */ + virtual QCString trLoading() + { + return "Carregant..."; + } + + /*! Label used for search results in the global namespace */ + virtual QCString trGlobalNamespace() + { + return "Espai de Noms Global"; + } + + /*! Message shown while searching */ + virtual QCString trSearching() + { + return "Cercant..."; + } + + /*! Text shown when no search results are found */ + virtual QCString trNoMatches() + { + return "Cap coincidència"; + } + }; #endif diff --git a/src/translator_de.h b/src/translator_de.h index ae68289..d3e3a61 100644 --- a/src/translator_de.h +++ b/src/translator_de.h @@ -27,7 +27,7 @@ // 2001/03/23 Jens Seidel (jensseidel@users.sourceforge.net) // - fixed typos // - changed trPageDocumentation() "Seitenbeschreibung" to -// "Zustzliche Informationen" +// "Zusätzliche Informationen" // - removed old trGeneratedFrom() // - changed "/*!" to "/*" (documentation is inherited from translator_en.h // (INHERIT_DOCS = YES), there's no need to make changes twice) @@ -70,7 +70,7 @@ // 2002/11/25 Jens Seidel (jensseidel@users.sourceforge.net) // - sync with english version 1.3 // - TranslatorGerman doesn't inherit from TranslatorEnglish anymore, -// so I changed "/* " back to "/*! " as in the english file +// so I changed "/* " back to "/*! " as in the English file // - use ngerman instead of german package in LaTeX // - changed "Datenelemente" to "Methoden" in // tr{,Static}{Public,Protected,Private}Members @@ -117,13 +117,19 @@ // 2009/01/09 Jens Seidel (jensseidel@users.sourceforge.net) // - Resynced the trLegendDocs() method // +// 2010/03/17 Jens Seidel (jensseidel@users.sourceforge.net) +// - Updated for "new since 1.6.0" version +// - Resynced the trLegendDocs() method (added closing HTML tags) +// - Changed file encoding to utf-8, adapted idLanguageCharset() +// - New German orthography (ngerman) is now default in LaTeX +// // Todo: // - see FIXME #ifndef TRANSLATOR_DE_H #define TRANSLATOR_DE_H -class TranslatorGerman : public TranslatorAdapter_1_6_0 +class TranslatorGerman : public Translator { public: @@ -143,17 +149,13 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 */ virtual QCString latexLanguageSupportCommand() { - //QCString result="\\usepackage{ngerman}\n"; - //result+="\\usepackage[latin1]{inputenc}\n"; - //result+="%\\usepackage[latin1]{inputenc}% Kodierung (cp850,latin1,ansinew)\n"; - QCString result="\\usepackage[german]{babel}\n"; - return result; + return "\\usepackage[ngerman]{babel}\n"; } /*! return the language charset. This will be used for the HTML output */ virtual QCString idLanguageCharset() { - return "iso-8859-1"; + return "utf-8"; } // --- Language translation methods ------------------- @@ -168,7 +170,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! header that is put before the detailed description of files, classes and namespaces. */ virtual QCString trDetailedDescription() - { return "Ausfhrliche Beschreibung"; } + { return "Ausführliche Beschreibung"; } /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() @@ -176,7 +178,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! header that is put before the list of enumerations. */ virtual QCString trMemberEnumerationDocumentation() - { return "Dokumentation der Aufzhlungstypen"; } + { return "Dokumentation der Aufzählungstypen"; } /*! header that is put before the list of member functions. */ virtual QCString trMemberFunctionDocumentation() @@ -202,18 +204,18 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! this is the first part of a sentence that is followed by a class name */ virtual QCString trThisIsTheListOfAllMembers() - { return "Vollstndige Aufstellung aller Elemente fr "; } + { return "Vollständige Aufstellung aller Elemente für "; } /*! this is the remainder of the sentence after the class name */ virtual QCString trIncludingInheritedMembers() - { return " einschlielich aller geerbten Elemente."; } + { return " einschließlich aller geerbten Elemente."; } /*! this is put at the author sections at the bottom of man pages. * parameter s is name of the project name. */ virtual QCString trGeneratedAutomatically(const char *s) { QCString result="Automatisch erzeugt von Doxygen"; - if (s) result+=(QCString)" fr "+s; + if (s) result+=(QCString)" für "+s; result+=" aus dem Quellcode."; return result; } @@ -279,7 +281,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! This is put above each page as a link to all related pages. */ virtual QCString trRelatedPages() - { return "Zustzliche Informationen"; } + { return "Zusätzliche Informationen"; } /*! This is put above each page as a link to all examples. */ virtual QCString trExamples() @@ -291,14 +293,14 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! This is an introduction to the class hierarchy. */ virtual QCString trClassHierarchyDescription() - { return "Die Liste der Ableitungen ist -mit Einschrnkungen- " + { return "Die Liste der Ableitungen ist -mit Einschränkungen- " "alphabetisch sortiert:"; } /*! This is an introduction to the list with all files. */ virtual QCString trFileListDescription(bool extractAll) { - QCString result="Hier folgt die Aufzhlung aller "; + QCString result="Hier folgt die Aufzählung aller "; if (!extractAll) result+="dokumentierten "; result+="Dateien mit einer Kurzbeschreibung:"; return result; @@ -309,12 +311,12 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "Hier folgt die Aufzhlung aller Datenstrukturen " + return "Hier folgt die Aufzählung aller Datenstrukturen " "mit einer Kurzbeschreibung:"; } else { - return "Hier folgt die Aufzhlung aller Klassen, Strukturen, " + return "Hier folgt die Aufzählung aller Klassen, Strukturen, " "Varianten und Schnittstellen mit einer Kurzbeschreibung:"; } } @@ -322,7 +324,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! This is an introduction to the page with all class members. */ virtual QCString trCompoundMembersDescription(bool extractAll) { - QCString result="Hier folgt die Aufzhlung aller "; + QCString result="Hier folgt die Aufzählung aller "; if (!extractAll) { result+="dokumentierten "; @@ -351,11 +353,11 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+="die zugehrigen Elemente:"; + result+="die zugehörigen Elemente:"; } else { - result+="die zugehrigen Klassen:"; + result+="die zugehörigen Klassen:"; } } return result; @@ -364,11 +366,11 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! This is an introduction to the page with all file members. */ virtual QCString trFileMembersDescription(bool extractAll) { - QCString result="Hier folgt die Aufzhlung aller "; + QCString result="Hier folgt die Aufzählung aller "; if (!extractAll) result+="dokumentierten "; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+="Funktionen, Variablen, Makros, Aufzhlungen und Typdefinitionen"; + result+="Funktionen, Variablen, Makros, Aufzählungen und Typdefinitionen"; } else { @@ -378,7 +380,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 if (extractAll) result+="die Dokumentation zu jedem Element:"; else - result+="die zugehrigen Dateien:"; + result+="die zugehörigen Dateien:"; return result; } @@ -388,11 +390,11 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! This is an introduction to the page with the list of related pages */ virtual QCString trRelatedPagesDescription() - { return "Hier folgt eine Liste mit zusammengehrigen Themengebieten:"; } + { return "Hier folgt eine Liste mit zusammengehörigen Themengebieten:"; } /*! This is an introduction to the page with the list of class/file groups */ virtual QCString trModulesDescription() - { return "Hier folgt die Aufzhlung aller Module:"; } + { return "Hier folgt die Aufzählung aller Module:"; } // index titles (the project name is prepended for these) @@ -466,7 +468,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 * the documentation of all related pages. */ virtual QCString trPageDocumentation() - { return "Zustzliche Informationen"; } + { return "Zusätzliche Informationen"; } /*! This is used in LaTeX as the title of the document */ virtual QCString trReferenceManual() @@ -494,7 +496,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 * list of enumerations */ virtual QCString trEnumerations() - { return "Aufzhlungen"; } + { return "Aufzählungen"; } /*! This is used in the documentation of a file as a header before the * list of (global) functions @@ -512,7 +514,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 * list of (global) variables */ virtual QCString trEnumerationValues() - { return "Aufzhlungswerte"; } + { return "Aufzählungswerte"; } /*! This is used in the documentation of a file before the list of * documentation blocks for defines @@ -536,7 +538,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 * of documentation blocks for enumeration types */ virtual QCString trEnumerationTypeDocumentation() - { return "Dokumentation der Aufzhlungstypen"; } + { return "Dokumentation der Aufzählungstypen"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions @@ -571,7 +573,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 virtual QCString trGeneratedAt(const char *date,const char *projName) { QCString result=(QCString)"Erzeugt am "+date; - if (projName) result+=(QCString)" fr "+projName; + if (projName) result+=(QCString)" für "+projName; result+=(QCString)" von"; return result; } @@ -586,12 +588,12 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! this text is put before a class diagram */ virtual QCString trClassDiagram(const char *clName) { - return (QCString)"Klassendiagramm fr "+clName+":"; + return (QCString)"Klassendiagramm für "+clName+":"; } /*! this text is generated when the \\internal command is used. */ virtual QCString trForInternalUseOnly() - { return "Nur fr den internen Gebrauch."; } + { return "Nur für den internen Gebrauch."; } /*! this text is generated when the \\warning command is used. */ virtual QCString trWarning() @@ -607,7 +609,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! this text is generated when the \\return command is used. */ virtual QCString trReturns() - { return "Rckgabe"; } + { return "Rückgabe"; } /*! this text is generated when the \\sa command is used. */ virtual QCString trSeeAlso() @@ -700,25 +702,25 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 } virtual QCString trPublicMembers() - { return "ffentliche Methoden"; } + { return "Öffentliche Methoden"; } virtual QCString trPublicSlots() - { return "ffentliche Slots"; } + { return "Öffentliche Slots"; } virtual QCString trSignals() { return "Signale"; } virtual QCString trStaticPublicMembers() - { return "ffentliche, statische Methoden"; } + { return "Öffentliche, statische Methoden"; } virtual QCString trProtectedMembers() - { return "Geschtzte Methoden"; } + { return "Geschützte Methoden"; } virtual QCString trProtectedSlots() - { return "Geschtzte Slots"; } + { return "Geschützte Slots"; } virtual QCString trStaticProtectedMembers() - { return "Geschtzte, statische Methoden"; } + { return "Geschützte, statische Methoden"; } virtual QCString trPrivateMembers() { return "Private Methoden"; } @@ -767,7 +769,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 */ virtual QCString trInheritedByList(int numEntries) { - return "Basisklasse fr "+trWriteList(numEntries)+"."; + return "Basisklasse für "+trWriteList(numEntries)+"."; } /*! used in member documentation blocks to produce a list of @@ -793,13 +795,13 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! This is an introduction to the page with all namespace members */ virtual QCString trNamespaceMemberDescription(bool extractAll) { - QCString result="Hier folgt die Aufzhlung aller "; + QCString result="Hier folgt die Aufzählung aller "; if (!extractAll) result+="dokumentierten "; result+="Namensbereichselemente mit Verweisen auf "; if (extractAll) - result+="die Namensbereichsdokumentation fr jedes Element:"; + result+="die Namensbereichsdokumentation für jedes Element:"; else - result+="die zugehrigen Dateien:"; + result+="die zugehörigen Dateien:"; return result; } @@ -835,7 +837,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single) { // single is true implies a single file - QCString result=(QCString)"Die Dokumentation fr diese"; + QCString result=(QCString)"Die Dokumentation für diese"; switch(compType) { case ClassDef::Class: result+=" Klasse"; break; @@ -863,7 +865,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! This is used as the heading text for the retval command. */ virtual QCString trReturnValues() - { return "Rckgabewerte"; } + { return "Rückgabewerte"; } /*! This is in the (quick) index as a link to the main page (index.html) */ @@ -906,13 +908,13 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! this text is put before a collaboration diagram */ virtual QCString trCollaborationDiagram(const char *clName) { - return (QCString)"Zusammengehrigkeiten von "+clName+":"; + return (QCString)"Zusammengehörigkeiten von "+clName+":"; } /*! this text is put before an include dependency graph */ virtual QCString trInclDepGraph(const char *fName) { - return (QCString)"Include-Abhngigkeitsdiagramm fr "+fName+":"; + return (QCString)"Include-Abhängigkeitsdiagramm für "+fName+":"; } /*! header that is put before the list of constructor/destructors. */ @@ -995,7 +997,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 virtual QCString trPublicTypes() { - return "ffentliche Typen"; + return "Öffentliche Typen"; } virtual QCString trPublicAttribs() @@ -1006,28 +1008,28 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 } else { - return "ffentliche Attribute"; + return "Öffentliche Attribute"; } } virtual QCString trStaticPublicAttribs() { - return "Statische ffentliche Attribute"; + return "Statische öffentliche Attribute"; } virtual QCString trProtectedTypes() { - return "Geschtzte Typen"; + return "Geschützte Typen"; } virtual QCString trProtectedAttribs() { - return "Geschtzte Attribute"; + return "Geschützte Attribute"; } virtual QCString trStaticProtectedAttribs() { - return "Statische geschtzte Attribute"; + return "Statische geschützte Attribute"; } virtual QCString trPrivateTypes() @@ -1083,7 +1085,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 virtual QCString trInclByDepGraph() { return "Dieser Graph zeigt, welche Datei direkt oder " - "indirekt diese Datei enthlt:"; + "indirekt diese Datei enthält:"; } virtual QCString trSince() @@ -1098,7 +1100,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! title of the graph legend page */ virtual QCString trLegendTitle() { - return "Erklrung des Graphen"; + return "Erklärung des Graphen"; } /*! page explaining how the dot graph's should be interpreted @@ -1107,21 +1109,21 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 virtual QCString trLegendDocs() { return - "Diese Seite erklrt die Interpretation der von doxygen " + "Diese Seite erklärt die Interpretation der von doxygen " "erzeugten Graphen.

        \n" "Beispiel:\n" "\\code\n" - "/*! Wegen Verkrzung unsichtbare Klasse */\n" + "/*! Wegen Verkürzung unsichtbare Klasse */\n" "class Invisible { };\n\n" - "/*! Klasse verkrzt dargestellt, Vererbungsbeziehung ist versteckt */\n" + "/*! Klasse verkürzt dargestellt, Vererbungsbeziehung ist versteckt */\n" "class Truncated : public Invisible { };\n\n" "/* Nicht mit doxygen-Kommentaren dokumentierte Klasse */\n" "class Undocumented { };\n\n" - "/*! Mithilfe ffentlicher Vererbung vererbte Klasse */\n" + "/*! Mithilfe öffentlicher Vererbung vererbte Klasse */\n" "class PublicBase : public Truncated { };\n\n" "/*! Eine Template-Klasse */\n" "template class Templ { };\n\n" - "/*! Mithilfe geschtzter Vererbung vererbte Klasse */\n" + "/*! Mithilfe geschützter Vererbung vererbte Klasse */\n" "class ProtectedBase { };\n\n" "/*! Mithilfe privater Vererbung vererbte Klasse */\n" "class PrivateBase { };\n\n" @@ -1139,34 +1141,37 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 "};\n" "\\endcode\n" "Dies liefert den folgenden Graphen:" - "

        \"\"
        \n" + "

        \"\"

        \n" "

        \n" "Die Rechtecke in obigem Graphen bedeuten:\n" + "

        \n" "
          \n" - "
        • Ein grau geflltes Rechteck stellt die Struktur oder " - "Klasse dar, fr die der Graph erzeugt wurde.\n" + "
        • Ein grau gefülltes Rechteck stellt die Struktur oder " + "Klasse dar, für die der Graph erzeugt wurde.
        • \n" "
        • Ein Rechteck mit schwarzem Rahmen kennzeichnet eine dokumentierte " - "Struktur oder Klasse.\n" + "Struktur oder Klasse.
        • \n" "
        • Ein Rechteck mit grauem Rahmen kennzeichnet eine undokumentierte " - "Struktur oder Klasse.\n" + "Struktur oder Klasse.
        • \n" "
        • Ein Rechteck mit rotem Rahmen kennzeichnet eine dokumentierte " - "Struktur oder Klasse, fr die nicht alle Vererbungs-/" - "Enthaltenseinsbeziehungen dargestellt werden. Ein Graph wird gekrzt, " - "wenn er nicht in die angegebenen Schranken passt.\n" + "Struktur oder Klasse, für die nicht alle Vererbungs-/" + "Enthaltenseinsbeziehungen dargestellt werden. Ein Graph wird gekürzt, " + "wenn er nicht in die angegebenen Schranken passt.
        • \n" "
        \n" + "

        \n" "Die Pfeile bedeuten:\n" + "

        \n" "
          \n" - "
        • Ein dunkelblauer Pfeil stellt eine ffentliche Vererbungsbeziehung " - "zwischen zwei Klassen dar.\n" - "
        • Ein dunkelgrner Pfeil stellt geschtzte Vererbung dar.\n" - "
        • Ein dunkelroter Pfeil stellt private Vererbung dar.\n" + "
        • Ein dunkelblauer Pfeil stellt eine öffentliche Vererbungsbeziehung " + "zwischen zwei Klassen dar.
        • \n" + "
        • Ein dunkelgrüner Pfeil stellt geschützte Vererbung dar.
        • \n" + "
        • Ein dunkelroter Pfeil stellt private Vererbung dar.
        • \n" "
        • Ein gestrichelter violetter Pfeil bedeutet, dass eine Klasse in " "einer anderen enthalten ist oder von einer anderen benutzt wird. Am " "Pfeil stehen die Variable(n), mit deren Hilfe auf die Struktur oder " - "Klasse an der Pfeilspitze zugegriffen werden kann.\n" - "
        • Ein gestrichelter gelber Pfeil kennzeichnet eine Verknpfung " + "Klasse an der Pfeilspitze zugegriffen werden kann.
        • \n" + "
        • Ein gestrichelter gelber Pfeil kennzeichnet eine Verknüpfung " "zwischen einer Template Instanz und der Template Klasse von welcher " - "es abstammt. Neben dem Pfeil sind die Template Parameter aufgefhrt.\n" + "es abstammt. Neben dem Pfeil sind die Template Parameter aufgeführt.
        • \n" "
        \n"; } @@ -1246,7 +1251,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 /*! The description of the package index page */ virtual QCString trPackageListDescription() { - return "Hier folgen die Pakete mit einer Kurzbeschreibung (wenn verfgbar):"; + return "Hier folgen die Pakete mit einer Kurzbeschreibung (wenn verfügbar):"; } /*! The link name in the Quick links header for each page */ @@ -1617,7 +1622,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 * and the fact that it is sorted alphabetically per level */ virtual QCString trDirDescription() - { return "Diese Verzeichnishierarchie ist -mit Einschrnkungen- " + { return "Diese Verzeichnishierarchie ist -mit Einschränkungen- " "alphabetisch sortiert:"; } @@ -1646,9 +1651,9 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 */ virtual QCString trOverloadText() { - return "Dies ist eine berladene Methode, die der Bequemlichkeit " + return "Dies ist eine überladene Methode, die der Bequemlichkeit " "wegen bereitgestellt wird. Sie unterscheidet sich von der " - "obigen Funktion nur in den Argumenten die sie untersttzt."; + "obigen Funktion nur in den Argumenten die sie unterstützt."; } ////////////////////////////////////////////////////////////////////////// @@ -1699,11 +1704,11 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 result+=" mit Links "; if (!extractAll) { - result+="zur Datenstruktur-Dokumentation fr jedes Element"; + result+="zur Datenstruktur-Dokumentation für jedes Element"; } else { - result+="zu den Datentypen, zu denen sie gehren:"; + result+="zu den Datentypen, zu denen sie gehören:"; } return result; } @@ -1792,11 +1797,11 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 result+="Modulelemente mit Links "; if (extractAll) { - result+="zur Moduldokumentation fr jedes Element:"; + result+="zur Moduldokumentation für jedes Element:"; } else { - result+="zu den Modulen, zu denen sie gehren:"; + result+="zu den Modulen, zu denen sie gehören:"; } return result; } @@ -1817,6 +1822,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 if (!singular) result+="e"; return result; } + /*! This is put at the bottom of a module documentation page and is * followed by a list of files that were used to generate the page. */ @@ -1824,7 +1830,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 bool single) { // single is true implies a single file - QCString result=(QCString)"Die Dokumentation fr "; + QCString result=(QCString)"Die Dokumentation für "; switch(compType) { case ClassDef::Class: result+="dieses Modul"; break; @@ -1841,6 +1847,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 result+=" wurde aus den folgenden Dateien erzeugt:"; return result; } + /*! This is used for translation of the word that will possibly * be followed by a single name or by a list of names * of the category. @@ -1851,6 +1858,7 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 if (!singular) result+="en"; return result; } + /*! This is used for translation of the word that will possibly * be followed by a single name or by a list of names * of the category. @@ -1868,6 +1876,40 @@ class TranslatorGerman : public TranslatorAdapter_1_6_0 return "Type Constraints"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.6.0 (mainly for the new search engine) +////////////////////////////////////////////////////////////////////////// + + /*! directory relation for \a name */ + virtual QCString trDirRelation(const char *name) + { + return "Bezug " + QCString(name); + } + + /*! Loading message shown when loading search results */ + virtual QCString trLoading() + { + return "Lade ..."; + } + + /*! Label used for search results in the global namespace */ + virtual QCString trGlobalNamespace() + { + return "Globaler Namensbereich"; + } + + /*! Message shown while searching */ + virtual QCString trSearching() + { + return "Suche ..."; + } + + /*! Text shown when no search results are found */ + virtual QCString trNoMatches() + { + return "Keine Treffer"; + } + }; #endif diff --git a/src/translator_eo.h b/src/translator_eo.h index 675409e..c0610e6 100644 --- a/src/translator_eo.h +++ b/src/translator_eo.h @@ -40,7 +40,7 @@ Translator class (by the local maintainer) when the localized translator is made up-to-date again. */ -class TranslatorEsperanto : public TranslatorAdapter_1_6_0 +class TranslatorEsperanto : public Translator { public: @@ -1775,6 +1775,40 @@ class TranslatorEsperanto : public TranslatorAdapter_1_6_0 return "Tipaj Limigoj"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.6.0 (mainly for the new search engine) +////////////////////////////////////////////////////////////////////////// + + /*! directory relation for \a name */ + virtual QCString trDirRelation(const char *name) + { + return QCString(name)+" Rilato"; + } + + /*! Loading message shown when loading search results */ + virtual QCString trLoading() + { + return "Ŝarĝante..."; + } + + /*! Label used for search results in the global namespace */ + virtual QCString trGlobalNamespace() + { + return "Malloka Nomspaco"; + } + + /*! Message shown while searching */ + virtual QCString trSearching() + { + return "Serĉante..."; + } + + /*! Text shown when no search results are found */ + virtual QCString trNoMatches() + { + return "Nenia kongruo"; + } + }; #endif diff --git a/src/translator_es.h b/src/translator_es.h index 9332ae2..bd663bc 100644 --- a/src/translator_es.h +++ b/src/translator_es.h @@ -21,15 +21,16 @@ * - It's posible that some sentences haven't got meaning because * some words haven't got translate in spanish. * Updated from 1.3.8 to 1.4.6 by Guillermo Ballester Valor (May-05-2006) - * Updated fron 1.4.6 to 1.5.1 by Bartomeu Creus Navarro (22-enero-2007) - * Updated fron 1.5.1 to 1.5.5 by Bartomeu Creus Navarro (5-febrero-2008) - * Updated fron 1.5.5 to 1.5.8 by Bartomeu Creus Navarro (10-abril-2009) + * Updated to 1.5.1 by Bartomeu Creus Navarro (22-enero-2007) + * Updated to 1.5.5 by Bartomeu Creus Navarro (5-febrero-2008) + * Updated to 1.5.8 by Bartomeu Creus Navarro (10-abril-2009) + * Updated to 1.6.3 by Bartomeu Creus Navarro (3-marzo-2010) */ #ifndef TRANSLATOR_ES_H #define TRANSLATOR_ES_H -class TranslatorSpanish : public TranslatorAdapter_1_6_0 +class TranslatorSpanish : public Translator { public: @@ -67,7 +68,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! return the language charset. This will be used for the HTML output */ virtual QCString idLanguageCharset() { - return "iso-8859-1"; + return "utf-8"; } // --- Language translation methods ------------------- @@ -86,7 +87,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() - { return "Documentacin de los 'Tipos Definidos' miembros de la clase"; } + { return "Documentacin de los 'Typedef' miembros de la clase"; } /*! header that is put before the list of enumerations. */ virtual QCString trMemberEnumerationDocumentation() @@ -123,11 +124,11 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! this is the first part of a sentence that is followed by a class name */ virtual QCString trThisIsTheListOfAllMembers() - { return "Esta es la lista completa de miembros para "; } + { return "Lista completa de los miembros de "; } /*! this is the remainder of the sentence after the class name */ virtual QCString trIncludingInheritedMembers() - { return ", incluyendo todos los miembros heredados."; } + { return ", incluyendo todos los heredados:"; } /*! this is put at the author sections at the bottom of man pages. * parameter s is name of the project name. @@ -250,7 +251,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! This is an introduction to the page with all class members. */ virtual QCString trCompoundMembersDescription(bool extractAll) { - QCString result="Esta es la lista de todos los "; + QCString result="Lista de todos los "; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { result+="campos de estructuras y uniones"; @@ -292,10 +293,10 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! This is an introduction to the page with all file members. */ virtual QCString trFileMembersDescription(bool extractAll) { - QCString result="Esta es la lista de "; + QCString result="Lista de "; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+="todas las funciones, variables, definiciones, enumeraciones y definiciones de tipos"; + result+="todas las funciones, variables, 'defines', enumeraciones y 'typedefs'"; } else { @@ -408,7 +409,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 * list of defines */ virtual QCString trDefines() - { return "Definiciones"; } + { return "'defines'"; } /*! This is used in the documentation of a file as a header before the * list of function prototypes @@ -420,7 +421,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 * list of typedefs */ virtual QCString trTypedefs() - { return "Tipos definidos"; } + { return "'typedefs'"; } /*! This is used in the documentation of a file as a header before the * list of enumerations @@ -444,13 +445,13 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 * list of (global) variables */ virtual QCString trEnumerationValues() - { return "Valores de la enumeracin"; } + { return "Valores de enumeraciones"; } /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ virtual QCString trDefineDocumentation() - { return "Documentacin de las definiciones"; } + { return "Documentacin de los 'defines'"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for function prototypes @@ -462,7 +463,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 * of documentation blocks for typedefs */ virtual QCString trTypedefDocumentation() - { return "Documentacin de los tipos definidos"; } + { return "Documentacin de los 'typedefs'"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration types @@ -523,7 +524,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! this text is generated when the \\internal command is used. */ virtual QCString trForInternalUseOnly() - { return "Para uso interno exclusivamente."; } + { return "Slo para uso interno."; } /*! this text is generated when the \\warning command is used. */ virtual QCString trWarning() @@ -563,14 +564,14 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! used as the title of page containing all the index of all namespaces. */ virtual QCString trNamespaceList() - { return "Lista de namespace"; } + { return "Lista de 'namespaces'"; } /*! used as an introduction to the namespace list */ virtual QCString trNamespaceListDescription(bool extractAll) { QCString result="Lista de "; if (!extractAll) result+="toda la documentacin de "; - result+="los namespaces con una breve descripcin:"; + result+="los 'namespaces', con una breve descripcin:"; return result; } @@ -680,7 +681,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 if (i
        \"\"
        \n" "

        \n" - "Las cajas en el grfico arriba tienen el significado que sigue:\n" + "Las cajas en el grfico arriba tienen el siguiente significado:\n" "

          \n" "
        • Una caja llena negra representa la estructura o clase para la cul" "se gener el grfico.\n" @@ -1087,8 +1088,8 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 "Las flechas tienen el siguiente significado:\n" "
            \n" "
          • Una flecha azul oscuro es usada para visualizar una relacin herencia publica entre dos clases.\n" - "
          • Una flecha verde oscura es usada para herencia protegida.\n" - "
          • Una flecha rojo oscura es usada para herencia privada.\n" + "
          • Una flecha verde oscuro es usada para herencia protegida.\n" + "
          • Una flecha rojo oscuro es usada para herencia privada.\n" "
          • Una flecha segmentada prpura se usa si la clase es contenida o " "usada por otra clase. La flecha est etiquetada por la variable " "con que se accede a la clase o estructura apuntada. \n" @@ -1100,7 +1101,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! text for the link to the legend page */ virtual QCString trLegend() { - return "leyenda"; + return "significado de colores y flechas"; } ////////////////////////////////////////////////////////////////////////// @@ -1116,7 +1117,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! Used as the header of the test list */ virtual QCString trTestList() { - return "Lista de Pruebas"; + return "Lista de pruebas"; } ////////////////////////////////////////////////////////////////////////// @@ -1142,7 +1143,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! Used as a section header for IDL property documentation */ virtual QCString trPropertyDocumentation() { - return "Documentacin de Propiedades"; + return "Documentacin de propiedades"; } ////////////////////////////////////////////////////////////////////////// @@ -1205,7 +1206,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! Used as the header of the bug list */ virtual QCString trBugList() { - return "Lista de Bugs"; + return "Lista de bugs"; } ////////////////////////////////////////////////////////////////////////// @@ -1387,7 +1388,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 */ virtual QCString trRTFTableOfContents() { - return "Tabla de Contenidos"; + return "Tabla de contenidos"; } ////////////////////////////////////////////////////////////////////////// @@ -1399,7 +1400,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 */ virtual QCString trDeprecatedList() { - return "Lista de Desaprobados"; + return "Lista de obsoletos"; } ////////////////////////////////////////////////////////////////////////// @@ -1417,7 +1418,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 /*! Header used for the documentation section of a class' events. */ virtual QCString trEventDocumentation() { - return "Documentacin de los Eventos"; + return "Documentacin de los eventos"; } ////////////////////////////////////////////////////////////////////////// @@ -1428,7 +1429,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 */ virtual QCString trPackageTypes() { - return "Tipos del Paquete"; + return "Tipos del 'package'"; } /*! Used as a heading for a list of Java class functions with package @@ -1436,7 +1437,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 */ virtual QCString trPackageMembers() { - return "Funciones del Paquete"; + return "Funciones del 'package'"; } /*! Used as a heading for a list of static Java class functions with @@ -1444,7 +1445,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 */ virtual QCString trStaticPackageMembers() { - return "Funciones Estticas del Paquete"; + return "Funciones estticas del 'package'"; } /*! Used as a heading for a list of Java class variables with package @@ -1452,7 +1453,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 */ virtual QCString trPackageAttribs() { - return "Atributos del Paquete"; + return "Atributos del 'package'"; } /*! Used as a heading for a list of static Java class variables with @@ -1460,7 +1461,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 */ virtual QCString trStaticPackageAttribs() { - return "Atributos Estticos del Paquete"; + return "Atributos Estticos del 'package'"; } ////////////////////////////////////////////////////////////////////////// @@ -1554,13 +1555,13 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 * hierarchy. */ virtual QCString trDirIndex() - { return "Jerarqua de Directorio"; } + { return "Jerarqua de directorios"; } /*! This is used as the name of the chapter containing the documentation * of the directories. */ virtual QCString trDirDocumentation() - { return "Documentacin de Directorio"; } + { return "Documentacin de directorios"; } /*! This is used as the title of the directory index and also in the * Quick links of an HTML page, to link to the directory hierarchy. @@ -1581,7 +1582,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 */ virtual QCString trDirReference(const char *dirName) { - QCString result="Referencia del Directorio "; + QCString result="Referencia del directorio "; result+=dirName; return result; } @@ -1834,6 +1835,40 @@ class TranslatorSpanish : public TranslatorAdapter_1_6_0 { return "Restriciones de tipo"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.6.0 (mainly for the new search engine) +////////////////////////////////////////////////////////////////////////// + + /*! directory relation for \a name */ + virtual QCString trDirRelation(const char *name) + { + return QCString(name)+" relacin"; + } + + /*! Loading message shown when loading search results */ + virtual QCString trLoading() + { + return "Cargando..."; + } + + /*! Label used for search results in the global namespace */ + virtual QCString trGlobalNamespace() + { + return "Namespace global"; + } + + /*! Message shown while searching */ + virtual QCString trSearching() + { + return "Buscando..."; + } + + /*! Text shown when no search results are found */ + virtual QCString trNoMatches() + { + return "Nada coincide"; + } }; diff --git a/src/translator_hr.h b/src/translator_hr.h index adb1979..cb229d4 100644 --- a/src/translator_hr.h +++ b/src/translator_hr.h @@ -14,7 +14,7 @@ * input used in their production; they are not affected by this license. * */ -// translation by Boris Bralo +// translation by Boris Bralo // Updates: // -------- // 2000/08/20 @@ -71,38 +71,23 @@ // 2009/01/09 // - Updated trLegendDocs // +// 2010/03/04 +// - Updates for "new since 1.6.0 (mainly for the new search engine)". +// - UTF-8 +// - removed decode() #ifndef TRANSLATOR_HR_H #define TRANSLATOR_HR_H -class TranslatorCroatian : public TranslatorAdapter_1_6_0 +class TranslatorCroatian : public Translator { private: - /*! to avoid macro redefinition from translator_cz.h */ - inline QCString decode(const QCString& sInput) - { - //if (Config_getBool("USE_WINDOWS_ENCODING")) - //{ - // return ISO88592ToWin1250(sInput); - //} - //else - //{ - return sInput; - //} - } public: QCString idLanguage() { return "croatian"; } QCString idLanguageCharset() { - //if (Config_getBool("USE_WINDOWS_ENCODING")) - //{ - // return "windows-1250"; - //} - //else - //{ - return "iso-8859-2"; - //} + return "utf-8"; } QCString latexLanguageSupportCommand() { return "\\usepackage[croatian]{babel}\n"; } @@ -111,37 +96,37 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 QCString trRelatedSubscript() { return "(To nisu member funkcije.)"; } QCString trDetailedDescription() - { return decode("Detaljno objanjenje"); } + { return "Detaljno objašnjenje"; } QCString trMemberTypedefDocumentation() - { return decode("Dokumentacija typedef lanova"); } + { return "Dokumentacija typedef članova"; } QCString trMemberEnumerationDocumentation() - { return decode("Dokumentacija enumeracijskih lanova"); } + { return "Dokumentacija enumeracijskih članova"; } QCString trMemberFunctionDocumentation() { return "Dokumentacija funkcija"; } QCString trMemberDataDocumentation() { return "Documentacija varijabli"; } QCString trMore() - { return decode("Opirnije..."); } + { return "Opširnije..."; } QCString trListOfAllMembers() - { return decode("Popis svih lanova."); } + { return "Popis svih članova."; } QCString trMemberList() - { return decode("Popis lanova."); } + { return "Popis članova."; } QCString trThisIsTheListOfAllMembers() - { return decode("Ovo je popis svih lanova"); } + { return "Ovo je popis svih članova"; } QCString trIncludingInheritedMembers() - { return decode(", ukljuujui naslijeene lanove."); } + { return ", uključujući naslijeđene članove."; } QCString trGeneratedAutomatically(const char *s) - { QCString result=decode("generirano automatski Doxygen-om"); + { QCString result="napravljeno automatski Doxygen-om"; if (s) result+=(QCString)" za "+s; result+=" iz programskog koda."; - return decode(result); + return result; } QCString trEnumName() - { return decode("enum ime"); } + { return "enum ime"; } QCString trEnumValue() - { return decode("enum vrijednost"); } + { return "enum vrijednost"; } QCString trDefinedIn() - { return decode("definirano u"); } + { return "definirano u"; } QCString trModules() { return "Moduli"; } QCString trClassHierarchy() @@ -162,28 +147,28 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 QCString trCompoundMembers() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - return decode("Svi lanovi struktura"); + return "Svi članovi struktura"; else - return decode("Svi lanovi klasa"); + return "Svi članovi klasa"; } QCString trFileMembers() - { return decode("lanovi klasa u datoteci"); } + { return "članovi klasa u datoteci"; } QCString trRelatedPages() - { return decode("Stranice povezane s ovom"); } + { return "Stranice povezane s ovom"; } QCString trExamples() { return "Primjeri"; } QCString trSearch() - { return decode("Trai"); } + { return "Traži"; } QCString trClassHierarchyDescription() - { return decode("Stablo naslijeivanja je sloeno " - "priblino po abecedi:"); + { return "Stablo naslijeđivanja je složeno " + "približno po abecedi:"; } QCString trFileListDescription(bool extractAll) { QCString result="Popis svih "; if (!extractAll) result+="dokumentiranih "; result+="datoteka, s kratkim opisom:"; - return decode(result); + return result; } QCString trCompoundListDescription() { return "Popis svih klasa, unija i struktura " @@ -196,13 +181,13 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 result+="dokumentiranih "; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - result+="lanova klasa s linkovima na "; + result+="članova klasa s linkovima na "; else - result+="lanova struktura s linkovima na "; + result+="članova struktura s linkovima na "; if (!extractAll) { - result+="dokumentaciju svakog lana:"; + result+="dokumentaciju svakog člana:"; } else { @@ -211,19 +196,19 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 else result +="dokumentaciju strukture"; } - return decode(result); + return result; } QCString trFileMembersDescription(bool extractAll) { QCString result="Popis svih "; if (!extractAll) result+="dokumentiranih "; - result+="lanova s linkovima na "; + result+="članova s linkovima na "; if (extractAll) result+="dokumentaciju datoteke u kojima se nalaze:"; else result+="datoteke u kojima se nalaze:"; - return decode(result); + return result; } QCString trExamplesDescription() { return "Popis primjera :"; } @@ -271,7 +256,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 QCString trPageDocumentation() { return "Dokumentacija vezane stranice"; } QCString trReferenceManual() - { return decode("Prirunik"); } + { return "Priručnik"; } QCString trDefines() { return "Definicije"; } @@ -303,21 +288,21 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 { return "Strukture"; } QCString trGeneratedAt(const char *date,const char *projName) { - QCString result=(QCString)"Generirano "+date; + QCString result=(QCString)"Napravljeno "+date; if (projName) result+=(QCString)" projekt: "+projName; result+=" generator: "; - return decode(result); + return result; } QCString trWrittenBy() { - return decode("napisao "); + return "napisao "; } QCString trClassDiagram(const char *clName) { - return decode("Dijagram klasa za ")+clName; + return QCString("Dijagram klasa za ")+clName; } QCString trForInternalUseOnly() - { return decode("Iskljuivo za internu uporabu."); } + { return "Isključivo za internu uporabu."; } QCString trWarning() { return "Upozorenje"; } QCString trVersion() @@ -327,7 +312,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 QCString trReturns() { return "Povratne vrijednosti"; } QCString trSeeAlso() - { return decode("Vidi takoer"); } + { return "Vidi također"; } QCString trParameters() { return "Parametri"; } QCString trExceptions() @@ -346,10 +331,10 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 QCString result="Popis svih "; if (!extractAll) result+="dokumentiranih "; result+="imenika s kratkim opisom:"; - return decode(result); + return result; } QCString trFriends() - { return decode("Friend-ovi "); } + { return "Friend-ovi "; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 @@ -373,21 +358,21 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 case ClassDef::Class: result+=" klase "; break; case ClassDef::Struct: result+=" strukture "; break; case ClassDef::Union: result+=" unije "; break; - case ClassDef::Interface: result+=" suelja (interface) "; break; + case ClassDef::Interface: result+=" sučelja (interface) "; break; case ClassDef::Protocol: result+=" protokola "; break; case ClassDef::Category: result+=" kategorije "; break; case ClassDef::Exception: result+=" iznimke (exception) "; break; } result += clName; - return decode(result); + return result; } QCString trFileReference(const char *fileName) // used as the title of the HTML page of a file { QCString result="Opis datoteke "; result+=fileName; - return decode(result); + return result; } QCString trNamespaceReference(const char *namespaceName) // used as the title of the HTML page of a namespace @@ -395,30 +380,30 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 QCString result ="Opis imenika "; result+=namespaceName; - return decode(result); + return result; } // these are for the member sections of a class, struct or union QCString trPublicMembers() - { return decode("Public lanovi"); } + { return "Public članovi"; } QCString trPublicSlots() { return "Public slotovi"; } QCString trSignals() { return "Signali"; } QCString trStaticPublicMembers() - { return decode("Static public lanovi"); } + { return "Static public članovi"; } QCString trProtectedMembers() - { return decode("Protected lanovi"); } + { return "Protected članovi"; } QCString trProtectedSlots() { return "Protected slotovi"; } QCString trStaticProtectedMembers() - { return decode("Static protected lanovi"); } + { return "Static protected članovi"; } QCString trPrivateMembers() - { return decode("Privatni lanovi"); } + { return "Privatni članovi"; } QCString trPrivateSlots() - { return decode("Privatni slotovi"); } + { return "Privatni slotovi"; } QCString trStaticPrivateMembers() - { return decode("Statini privatni lanovi"); } + { return "Statični privatni članovi"; } // end of member sections QCString trWriteList(int numEntries) @@ -449,41 +434,41 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 // used in class documentation to produce a list of base classes, // if class diagrams are disabled. { - return decode("Naslijeuje od "+trWriteList(numEntries)+"."); + return "Naslijeđuje od "+trWriteList(numEntries)+"."; } QCString trInheritedByList(int numEntries) // used in class documentation to produce a list of super classes, // if class diagrams are disabled. { - return decode("Naslijeena u "+trWriteList(numEntries)+"."); + return "Naslijeđena u "+trWriteList(numEntries)+"."; } QCString trReimplementedFromList(int numEntries) // used in member documentation blocks to produce a list of // members that are hidden by this one. { - return decode("Reimplementirano od "+trWriteList(numEntries)+"."); + return "Reimplementirano od "+trWriteList(numEntries)+"."; } QCString trReimplementedInList(int numEntries) { // used in member documentation blocks to produce a list of // all member that overwrite the implementation of this member. - return decode("Reimplementacija u "+trWriteList(numEntries)+"."); + return "Reimplementacija u "+trWriteList(numEntries)+"."; } QCString trNamespaceMembers() // This is put above each page as a link to all members of namespaces. - { return decode("lanovi imenika"); } + { return "članovi imenika"; } QCString trNamespaceMemberDescription(bool extractAll) // This is an introduction to the page with all namespace members { QCString result="Lista svih "; if (!extractAll) result+="dokumentiranih "; - result+="lanova imenika s linkovima na "; + result+="članova imenika s linkovima na "; if (extractAll) - result+="imeniku dokumentaciju svakog lana:"; + result+="imeničku dokumentaciju svakog člana:"; else result+="imenike kojima pripadaju:"; - return decode(result); + return result; } QCString trNamespaceIndex() // This is used in LaTeX as the title of the chapter with the @@ -523,13 +508,13 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 case ClassDef::Class: result+="klase"; break; case ClassDef::Struct: result+="strukture"; break; case ClassDef::Union: result+="unije"; break; - case ClassDef::Interface: result+="suelja (interface)"; break; + case ClassDef::Interface: result+="sučelja (interface)"; break; case ClassDef::Protocol: result+="protokola"; break; case ClassDef::Category: result+="kategorije"; break; case ClassDef::Exception: result+="iznimke (exception)"; break; } - result+=" je generirana iz " + trFile(FALSE, single) + ": "; - return decode(result); + result+=" je napravljena iz " + trFile(FALSE, single) + ": "; + return result; } /*! This is in the (quick) index as a link to the alphabetical compound @@ -586,12 +571,12 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 /*! this text is put before a collaboration diagram */ QCString trCollaborationDiagram(const char *clName) { - return decode( (QCString)"Kolaboracijski dijagram za "+clName+ ":"); + return (QCString)"Kolaboracijski dijagram za "+clName+ ":"; } /*! this text is put before an include dependency graph */ QCString trInclDepGraph(const char *fName) { - return decode((QCString)"Graf include meuovisnosti za "+fName+":"); + return (QCString)"Graf include međuovisnosti za "+fName+":"; } /*! header that is put before the list of constructor/destructors. */ QCString trConstructorDocumentation() @@ -626,7 +611,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 /*! Text shown before a multi-line variable/enum initialization */ QCString trInitialValue() { - return decode("Poetna vrijednost:"); + return "Početna vrijednost:"; } /*! Text used the source code in the file index */ QCString trCode() @@ -635,11 +620,11 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 } QCString trGraphicalHierarchy() { - return decode("Grafiko stablo klasa"); + return "Grafičko stablo klasa"; } QCString trGotoGraphicalHierarchy() { - return decode("Grafiko stablo klasa"); + return "Grafičko stablo klasa"; } QCString trGotoTextualHierarchy() { @@ -723,12 +708,12 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 } virtual QCString trAttention() { - return decode("Panja"); + return "Pažnja"; } virtual QCString trInclByDepGraph() { - return decode("Ovaj graf pokazuje koje datoteke izravno " - "ili neizravno ukljuuju ovu datoteku:"); + return "Ovaj graf pokazuje koje datoteke izravno " + "ili neizravno uključuju ovu datoteku:"; } virtual QCString trSince() { @@ -748,27 +733,27 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 virtual QCString trLegendDocs() { return - decode( "Ova stranica objanjava kako interpretirati grafikone koje je generirao " + "Ova stranica objašnjava kako interpretirati grafikone koje je generirao " "doxygen.

            \n" "Na primjer:\n" "\\code\n" - "/*! Nevidljiva klasa (nee stati na graf date visine) */\n" + "/*! Nevidljiva klasa (neće stati na graf date visine) */\n" "class Invisible { };\n\n" "/*! Odrezana klasa, inheritance je skriven (klase se vidi na grafu, ali ne i sve bazne klase) */\n" "class Truncated : public Invisible { };\n\n" "/* Nedokumentirana klasa */\n" "class Undocumented { };\n\n" - "/*! Klasa koja je naslijeena public */\n" + "/*! Klasa koja je naslijeđena public */\n" "class PublicBase : public Truncated { };\n\n" "/*! A template class */\n" "template class Templ { };\n\n" - "/*! Klasa koje je naslijeena protected */\n" + "/*! Klasa koje je naslijeđena protected */\n" "class ProtectedBase { };\n\n" - "/*! Klasa koje je naslijeena private */\n" + "/*! Klasa koje je naslijeđena private */\n" "class PrivateBase { };\n\n" "/*! Klasa koja se koristi agregacijom */\n" "class Used { };\n\n" - "/*! Super klasa koja naslijeuje/koristi ostale */\n" + "/*! Super klasa koja naslijeđuje/koristi ostale */\n" "class Inherited : public PublicBase,\n" " protected ProtectedBase,\n" " private PrivateBase,\n" @@ -779,30 +764,30 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 " Used *m_usedClass;\n" "};\n" "\\endcode\n" - "To e rezultirati grafikonom:" + "To će rezultirati grafikonom:" "

            \n" "

            \n" - "Pravokutnici imaju slijedee znaenje:\n" + "Pravokutnici imaju slijedeće značenje:\n" "

              \n" - "
            • %A Puni crni predstavlja klasu za koji je generiran graf.\n" - "
            • %A Pravokutnik s crnim rubom predstavlja dokumentiranu klasu.\n" - "
            • %A Pravokutnik s sivim rubom predstavlja nedokumentiranu klasu.\n" - "
            • %A Pravokutnik s crvenim rubom predstavlja dokumentiranu klasu\n" - "Za koju nije prikazan graf naslijeivanja. Graf je odrezan " - "ako ne stane unutar odreenih granica." + "
            • Puni crni predstavlja klasu za koji je napravljen graf.\n" + "
            • Pravokutnik s crnim rubom predstavlja dokumentiranu klasu.\n" + "
            • Pravokutnik s sivim rubom predstavlja nedokumentiranu klasu.\n" + "
            • Pravokutnik s crvenim rubom predstavlja dokumentiranu klasu\n" + "Za koju nije prikazan graf naslijeđivanja. Graf je odrezan " + "ako ne stane unutar određenih granica." "
            \n" - "Strelice imaju slijedee znaenje:\n" + "Strelice imaju slijedeće značenje:\n" "
              \n" - "
            • %A Tamnoplava strelica oznaava public naslijeivanje.\n" - "
            • %A Tamnozelena strelica oznaava protected naslijeivanje.\n" - "
            • %A Tamnocrvena strelica oznaava private naslijeivanje.\n" - "
            • %A Ljubiasta isprekidana strelica se koristi ako je klasa dio " + "
            • Tamnoplava strelica označava public naslijeđivanje.\n" + "
            • Tamnozelena strelica označava protected naslijeđivanje.\n" + "
            • Tamnocrvena strelica označava private naslijeđivanje.\n" + "
            • Ljubičasta isprekidana strelica se koristi ako je klasa dio " "druge klase ili ako se klasa koristi u drugoj klasi. Natpis na " "strelici je ime varijable u drugoj klasi\n" - "Strelica je oznaena imenom varijable.\n" - "
            • %A uta isprekidana strelica oznaava relaciju izmeu template instance " - "i template klase. Oznaena je imenom template parametra\n" - "
            \n"); + "Strelica je označena imenom varijable.\n" + "
          • Žuta isprekidana strelica označava relaciju između template instance " + "i template klase. Označena je imenom template parametra\n" + "
          \n"; } /*! text for the link to the legend page */ virtual QCString trLegend() @@ -860,7 +845,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 /*! Used as the title of a Java package */ virtual QCString trPackage(const char *name) { - return decode((QCString)"Paket "+name); + return (QCString)"Paket "+name; } /*! Title of the package index page */ virtual QCString trPackageList() @@ -890,12 +875,12 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 /*! Used as a marker that is put before a \\bug item */ virtual QCString trBug() { - return decode("Greka"); + return "Greška"; } /*! Used as the header of the bug list */ virtual QCString trBugList() { - return decode("Popis greaka"); + return "Popis grešaka"; } ////////////////////////////////////////////////////////////////////////// @@ -914,7 +899,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 /*! Used as header RTF general index */ virtual QCString trRTFGeneralIndex() { - return decode("Sadraj"); + return "Sadržaj"; } /*! This is used for translation of the word that will possibly @@ -981,9 +966,9 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 */ virtual QCString trMember(bool first_capital, bool singular) { - QCString result((first_capital ? "lan" : "lan")); + QCString result((first_capital ? "član" : "član")); if (!singular) result+="ovi"; - return decode(result); + return result; } /*! This is used for translation of the word that will possibly @@ -1052,7 +1037,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 */ virtual QCString trRTFTableOfContents() { - return decode("Sadraj"); + return "Sadržaj"; } ////////////////////////////////////////////////////////////////////////// // new since 1.2.17 @@ -1074,12 +1059,12 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 */ virtual QCString trEvents() { - return decode("Dogaaji"); + return "Događaji"; } /*! Header used for the documentation section of a class' events. */ virtual QCString trEventDocumentation() { - return decode("Dokumentacija dogaaja"); + return "Dokumentacija događaja"; } ////////////////////////////////////////////////////////////////////////// // new since 1.3 @@ -1103,7 +1088,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 */ virtual QCString trStaticPackageMembers() { - return decode("Statike funkcije u paketu"); + return "Statičke funkcije u paketu"; } /*! Used as a heading for a list of Java class variables with package * scope. @@ -1117,7 +1102,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 */ virtual QCString trStaticPackageAttribs() { - return decode("Statiki atributi u paketu"); + return "Statički atributi u paketu"; } ////////////////////////////////////////////////////////////////////////// // new since 1.3.1 @@ -1146,7 +1131,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 */ virtual QCString trSearchForIndex() { - return decode("Trai"); + return "Traži"; } /*! This string is used as the title for the page listing the search * results. @@ -1167,26 +1152,23 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 { if (numDocuments==0) { - return decode("Nema dokumenta koji odgovaraju vaem upitu"); + return "Nema dokumenta koji odgovaraju vašem upitu"; } else if (numDocuments==1) { - return decode("Naen 1 dokument koji odgovara vaem upitu."); + return "Nađen 1 dokument koji odgovara vašem upitu."; } else if (numDocuments<5) { - // croatian handle numbers up to 5 differently - // For those of you who like to read comments : - // There are only 4 men in the world in croatian. - // We say 1 ovjek (man), 2 ovjeka, 3 ovjeka , 4 ovjeka , but 5, 6, 7 ... ljudi (people) - // That's deep, isn't it :-)? - return decode("Naena $num dokumenta koji odgovaraju vaem upitu." - "Najbolji su prikazani prvi."); + // Croatian (AFAIK all Slavic languages except Macedonian and Bulgarian) + // have different plural form for 2,3,4. + return "Nađena $num dokumenta koji odgovaraju vašem upitu." + "Najbolji su prikazani prvi."; } else { - return decode("Naeno $num dokumenata koji odgovaraju vaem upitu." - "Najbolji su prikazani prvi."); + return "Nađeno $num dokumenata koji odgovaraju vašem upitu." + "Najbolji su prikazani prvi."; } } /*! This string is put before the list of matched words, for each search @@ -1194,7 +1176,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 */ virtual QCString trSearchMatches() { - return decode("Pronaeno:"); + return "Pronađeno:"; } ////////////////////////////////////////////////////////////////////////// @@ -1260,9 +1242,9 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 */ virtual QCString trOverloadText() { - return decode("Ovo je preoptereena funkcija (overload). " + return "Ovo je preopterećena funkcija (overload). " "Razlikuje se od navedene metode " - "samo po vrsti argumenata koje prihvata."); + "samo po vrsti argumenata koje prihvaća."; } ////////////////////////////////////////////////////////////////////////// @@ -1375,12 +1357,12 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 case ClassDef::Class: result+=" Modul"; break; case ClassDef::Struct: result+=" Tip"; break; case ClassDef::Union: result+=" Unija"; break; - case ClassDef::Interface: result+=" Suelje"; break; + case ClassDef::Interface: result+=" Sučelje"; break; case ClassDef::Protocol: result+=" Protokol"; break; case ClassDef::Category: result+=" Kategorija"; break; case ClassDef::Exception: result+=" Iznimka"; break; } - if (isTemplate) result+=" Predloak"; + if (isTemplate) result+=" Predložak"; result+=" Referenca"; return result; } @@ -1388,23 +1370,23 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 virtual QCString trModuleReference(const char *namespaceName) { QCString result=namespaceName; - result+=" - Sadraj modula"; + result+=" - Sadržaj modula"; return result; } /*! This is put above each page as a link to all members of modules. (Fortran) */ virtual QCString trModulesMembers() - { return "lanovi modula"; } + { return "članovi modula"; } /*! This is an introduction to the page with all modules members (Fortran) */ virtual QCString trModulesMemberDescription(bool extractAll) { QCString result="Lista svih "; if (!extractAll) result+="dokumentiranih "; - result+="lanova modula s linkovima na "; + result+="članova modula s linkovima na "; if (extractAll) { - result+="dokumentaciju modula za svaki lan:"; + result+="dokumentaciju modula za svaki član:"; } else { @@ -1442,12 +1424,12 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 case ClassDef::Class: result+="modula"; break; case ClassDef::Struct: result+="tipa"; break; case ClassDef::Union: result+="unije"; break; - case ClassDef::Interface: result+="suelja"; break; + case ClassDef::Interface: result+="sučelja"; break; case ClassDef::Protocol: result+="protokola"; break; case ClassDef::Category: result+="kategorije"; break; case ClassDef::Exception: result+="iznimke"; break; } - result+=" je generirana iz :"; + result+=" je napravljena iz :"; return result; } /*! This is used for translation of the word that will possibly @@ -1471,10 +1453,43 @@ class TranslatorCroatian : public TranslatorAdapter_1_6_0 return result; } - /*! C# Type Contraint list */ + /*! C# Type Constraint list */ virtual QCString trTypeConstraints() { - return "Ogranienja za tip podataka"; + return "Ograničenja tipova (Type Constraints)"; + } + ////////////////////////////////////////////////////////////////////////// + // new since 1.6.0 (mainly for the new search engine) + ////////////////////////////////////////////////////////////////////////// + + /*! directory relation for \a name */ + virtual QCString trDirRelation(const char *name) + { + return QCString("Relacije ") + QCString(name); + } + + /*! Loading message shown when loading search results */ + virtual QCString trLoading() + { + return "Učitavam..."; + } + + /*! Label used for search results in the global namespace */ + virtual QCString trGlobalNamespace() + { + return "Globalni namespace"; + } + + /*! Message shown while searching */ + virtual QCString trSearching() + { + return "Tražim..."; + } + + /*! Text shown when no search results are found */ + virtual QCString trNoMatches() + { + return "Nema traženih podataka"; } }; diff --git a/src/util.cpp b/src/util.cpp index 512bb66..1bb85f2 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -3572,19 +3572,21 @@ static void findMembersWithSpecificName(MemberName *mn, bool checkCV, QList &members) { - //printf(" Function with global scope name `%s' args=`%s'\n",memberName.data(),args); + //printf(" Function with global scope name `%s' args=`%s'\n", + // mn->memberName(),args); MemberListIterator mli(*mn); MemberDef *md; for (mli.toFirst();(md=mli.current());++mli) { FileDef *fd=md->getFileDef(); GroupDef *gd=md->getGroupDef(); - //printf(" md->name()=`%s' md->args=`%s' fd=%p gd=%p\n", - // md->name().data(),args,fd,gd); + //printf(" md->name()=`%s' md->args=`%s' fd=%p gd=%p current=%p\n", + // md->name().data(),args,fd,gd,currentFile); if ( ((gd && gd->isLinkable()) || (fd && fd->isLinkable())) && md->getNamespaceDef()==0 && md->isLinkable() && - (!checkStatics || !md->isStatic() || currentFile==0 || fd==currentFile) // statics must appear in the same file + (!checkStatics || (!md->isStatic() && !md->isDefine()) || + currentFile==0 || fd==currentFile) // statics must appear in the same file ) { //printf(" fd=%p gd=%p args=`%s'\n",fd,gd,args); @@ -3952,44 +3954,6 @@ bool getDefs(const QCString &scName,const QCString &memberName, // search again without strict static checking findMembersWithSpecificName(mn,args,FALSE,currentFile,checkCV,members); } - -#if 0 - //printf(" Function with global scope name `%s' args=`%s'\n",memberName.data(),args); - MemberListIterator mli(*mn); - for (mli.toFirst();(md=mli.current());++mli) - { - fd=md->getFileDef(); - gd=md->getGroupDef(); - //printf(" md->name()=`%s' md->args=`%s' fd=%p gd=%p\n", - // md->name().data(),args,fd,gd); - if ( - ((gd && gd->isLinkable()) || (fd && fd->isLinkable())) && - md->getNamespaceDef()==0 && md->isLinkable() && - (!md->isStatic() || fd==currentFile) // statics must appear in the same file - ) - { - //printf(" fd=%p gd=%p args=`%s'\n",fd,gd,args); - bool match=TRUE; - ArgumentList *argList=0; - if (args && !md->isDefine() && strcmp(args,"()")!=0) - { - argList=new ArgumentList; - LockingPtr mdAl = md->argumentList(); - stringToArgumentList(args,argList); - match=matchArguments2( - md->getOuterScope(),fd,mdAl.pointer(), - Doxygen::globalScope,fd,argList, - checkCV); - delete argList; argList=0; - } - if (match) - { - //printf("Found match!\n"); - members.append(md); - } - } - } -#endif if (members.count()!=1 && args && !strcmp(args,"()")) { // no exact match found, but if args="()" an arbitrary @@ -5789,7 +5753,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle, pd->setReference(tagInfo->tagName); } - pd->setFileName(convertNameToFile(pd->name(),TRUE,FALSE)); + pd->setFileName(convertNameToFile(pd->name())); //printf("Appending page `%s'\n",baseName.data()); Doxygen::pageSDict->append(baseName,pd); @@ -7000,5 +6964,24 @@ bool patternMatch(const QFileInfo &fi,const QStrList *patList) return found; } +void writeSummaryLink(OutputList &ol,const char *label,const char *title, + bool &first) +{ + if (first) + { + ol.writeString("
          \n"); + first=FALSE; + } + else + { + ol.writeString(" |\n"); + } + ol.writeString(""); + ol.writeString(title); + ol.writeString(""); +} + diff --git a/src/util.h b/src/util.h index b1c12a6..d20b30b 100644 --- a/src/util.h +++ b/src/util.h @@ -372,5 +372,8 @@ QCString filterTitle(const QCString &title); bool patternMatch(const QFileInfo &fi,const QStrList *patList); +void writeSummaryLink(OutputList &ol,const char *label,const char *title, + bool &first); + #endif diff --git a/src/vhdlcode.h b/src/vhdlcode.h index 3865fc2..e5df98e 100644 --- a/src/vhdlcode.h +++ b/src/vhdlcode.h @@ -11,7 +11,7 @@ class MemberDef; void parseVhdlCode(CodeOutputInterface &,const char *,const QCString &, bool ,const char *,FileDef *fd=0, int startLine=-1,int endLine=-1,bool inlineFragment=FALSE, - MemberDef *memberDef=0); + MemberDef *memberDef=0,bool showLineNumbers=TRUE); void resetVhdlCodeParserState(); void codeFreeVhdlScanner(); diff --git a/src/vhdlcode.l b/src/vhdlcode.l index ab125d2..1547e80 100644 --- a/src/vhdlcode.l +++ b/src/vhdlcode.l @@ -1479,7 +1479,7 @@ void resetVhdlCodeParserState() void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString &s, bool exBlock, const char *exName,FileDef *fd, int startLine,int endLine,bool inlineFragment, - MemberDef *memberDef) + MemberDef *memberDef,bool) { //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd); if (s.isEmpty()) return; diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp index 3abc9a0..72c6e9d 100644 --- a/src/vhdldocgen.cpp +++ b/src/vhdldocgen.cpp @@ -2220,7 +2220,7 @@ void VhdlDocGen::writeVHDLDeclarations(MemberList* ml,OutputList &ol, if (title) { - ol.startMemberHeader(); + ol.startMemberHeader(ml->listTypeAsString()); ol.parseText(title); ol.endMemberHeader(); ol.docify(" "); diff --git a/src/vhdlscanner.h b/src/vhdlscanner.h index 0d7ad03..9f3a15c 100644 --- a/src/vhdlscanner.h +++ b/src/vhdlscanner.h @@ -76,7 +76,8 @@ class VHDLLanguageScanner : public ParserInterface int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, - MemberDef *memberDef=0 + MemberDef *memberDef=0, + bool showLineNumbers=TRUE ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/vhdlscanner.l b/src/vhdlscanner.l index 5f582be..e9704ec 100644 --- a/src/vhdlscanner.l +++ b/src/vhdlscanner.l @@ -2015,9 +2015,12 @@ void VHDLLanguageScanner::parseCode(CodeOutputInterface &codeOutIntf, int startLine, int endLine, bool inlineFragment, - MemberDef *memberDef + MemberDef *memberDef, + bool showLineNumbers ) { - ::parseVhdlCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName,fileDef,startLine,endLine,inlineFragment,memberDef); + ::parseVhdlCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName, + fileDef,startLine,endLine,inlineFragment,memberDef, + showLineNumbers); } -- cgit v0.12