master 5388242a6387 cached
533 files
4.4 MB
1.2M tokens
2874 symbols
1 requests
Download .txt
Showing preview only (4,751K chars total). Download the full file or copy to clipboard to get everything.
Repository: tomwillow/SmartCharsetConverter
Branch: master
Commit: 5388242a6387
Files: 533
Total size: 4.4 MB

Directory structure:
gitextract_dzo0glnd/

├── .clang-format
├── .github/
│   └── workflows/
│       └── cmake-single-platform.yml
├── .gitignore
├── CMakeLists.txt
├── CMakePresets.json
├── README-en.md
├── README.md
├── config_on_win.bat
├── sample/
│   ├── expect_pass/
│   │   ├── [EUC-JP]readme.txt
│   │   ├── [Unknown]ubuntu-22.04.2-desktop-amd64.iso.torrent
│   │   ├── [gb18030]你还戴着这副眼镜.txt
│   │   ├── [utf-16].txt
│   │   ├── [utf-16be].txt
│   │   ├── [utf-16le].txt
│   │   └── [utf-8].txt
│   ├── not_pass_yet/
│   │   ├── [GB18030]DialogAnimation.h
│   │   ├── [GB18030]LogRecord.h
│   │   ├── [GB18030]TBarTool_GB.cpp
│   │   ├── [GB18030]TDraw.h
│   │   ├── [GB18030]TMenu.cpp
│   │   ├── [GB18030]一个字.txt
│   │   ├── [GB18030]澤野弘之.lrc
│   │   ├── [GB18030]编译说明.txt
│   │   ├── [GB18030]连杆.cpp
│   │   ├── [UTF-8]CMakeLists.txt
│   │   ├── [UTF-8]TBarTool.cpp
│   │   └── [UTF-8]虚拟机环境.txt
│   ├── tcvn/
│   │   ├── demo1-tcvn.txt
│   │   ├── demo1-utf16le.txt
│   │   └── demo1-utf8.txt
│   └── uchardet_test_samples/
│       ├── ar/
│       │   ├── iso-8859-6.txt
│       │   ├── utf-8.txt
│       │   └── windows-1256.txt
│       ├── be/
│       │   ├── iso-8859-5.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── bg/
│       │   ├── iso-8859-5.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── ca/
│       │   ├── iso-8859-1.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── cs/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── da/
│       │   ├── ibm865.txt
│       │   ├── iso-8859-1.txt
│       │   ├── iso-8859-15.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── de/
│       │   ├── iso-8859-1.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── el/
│       │   ├── cp737.txt
│       │   ├── iso-8859-7.txt
│       │   ├── utf-8.txt
│       │   └── windows-1253.txt
│       ├── en/
│       │   ├── ascii.txt
│       │   └── utf-8.txt
│       ├── eo/
│       │   ├── iso-8859-3.txt
│       │   └── utf-8.txt
│       ├── es/
│       │   ├── iso-8859-1.txt
│       │   ├── iso-8859-15.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── et/
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-15.txt
│       │   ├── iso-8859-4.txt
│       │   ├── utf-8.txt
│       │   ├── windows-1252.txt
│       │   └── windows-1257.txt
│       ├── fi/
│       │   ├── iso-8859-1.txt
│       │   └── utf-8.txt
│       ├── fr/
│       │   ├── iso-8859-1.txt
│       │   ├── iso-8859-15.txt
│       │   ├── utf-16.be
│       │   ├── utf-32.le
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── ga/
│       │   ├── iso-8859-1.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── he/
│       │   ├── ibm862.logical.txt
│       │   ├── ibm862.visual.txt
│       │   ├── iso-8859-8.txt
│       │   ├── utf-8.txt
│       │   └── windows-1255.txt
│       ├── hi/
│       │   └── utf-8.txt
│       ├── hr/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-16.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── hu/
│       │   ├── iso-8859-2.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── it/
│       │   ├── iso-8859-1.txt
│       │   └── utf-8.txt
│       ├── ja/
│       │   ├── euc-jp.txt
│       │   ├── iso-2022-jp.txt
│       │   ├── shift_jis.txt
│       │   ├── utf-16be.txt
│       │   ├── utf-16le.txt
│       │   └── utf-8.txt
│       ├── ka/
│       │   ├── georgian-academy.txt
│       │   ├── georgian-ps.txt
│       │   └── utf-8.txt
│       ├── ko/
│       │   ├── iso-2022-kr.txt
│       │   ├── johab.txt
│       │   ├── uhc.smi
│       │   ├── utf-16.le
│       │   ├── utf-32.be
│       │   └── utf-8.txt
│       ├── lt/
│       │   ├── iso-8859-10.txt
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-4.txt
│       │   └── utf-8.txt
│       ├── lv/
│       │   ├── iso-8859-10.txt
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-4.txt
│       │   └── utf-8.txt
│       ├── mk/
│       │   ├── ibm855.txt
│       │   ├── iso-8859-5.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── mt/
│       │   ├── iso-8859-3.txt
│       │   └── utf-8.txt
│       ├── no/
│       │   ├── ibm865.txt
│       │   ├── iso-8859-1.txt
│       │   ├── iso-8859-15.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── pl/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-16.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── pt/
│       │   ├── iso-8859-1.txt
│       │   └── utf-8.txt
│       ├── ro/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-16.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── ru/
│       │   ├── ibm855.txt
│       │   ├── ibm866.txt
│       │   ├── iso-8859-5.txt
│       │   ├── koi8-r.txt
│       │   ├── mac-cyrillic.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── sk/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── sl/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-16.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── sr/
│       │   ├── iso-8859-5.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── sv/
│       │   ├── iso-8859-1.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── th/
│       │   ├── iso-8859-11.txt
│       │   ├── tis-620.txt
│       │   └── utf-8.txt
│       ├── tr/
│       │   ├── iso-8859-3.txt
│       │   ├── iso-8859-9.txt
│       │   └── utf-8.txt
│       ├── uk/
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── vi/
│       │   ├── utf-8.txt
│       │   ├── viscii.txt
│       │   └── windows-1258.txt
│       └── zh/
│           ├── big5.txt
│           ├── euc-tw.txt
│           ├── gb18030.txt
│           └── utf-8.txt
├── scripts/
│   └── extract_change_log.py
├── src/
│   ├── CMakeLists.txt
│   ├── Common/
│   │   ├── CMakeLists.txt
│   │   ├── CommandLineParser.cpp
│   │   ├── CommandLineParser.h
│   │   ├── ConsoleSettings.cpp
│   │   ├── ConsoleSettings.h
│   │   ├── ErrorFunction.cpp
│   │   ├── ErrorFunction.h
│   │   ├── FileFunction.cpp
│   │   ├── FileFunction.h
│   │   ├── ResourceLoader.cpp
│   │   ├── ResourceLoader.h
│   │   ├── SingleApplication.h
│   │   ├── ThreadPool/
│   │   │   ├── SafeQueue.h
│   │   │   └── ThreadPool.h
│   │   ├── TimeStamp.cpp
│   │   ├── TimeStamp.h
│   │   ├── noncopyable.h
│   │   ├── tstring.cpp
│   │   └── tstring.h
│   ├── Control/
│   │   ├── CMakeLists.txt
│   │   ├── ControlStyle.h
│   │   ├── TListView.cpp
│   │   ├── TListView.h
│   │   ├── TMenu.cpp
│   │   └── TMenu.h
│   ├── Core/
│   │   ├── CMakeLists.txt
│   │   ├── CharsetCode.cpp
│   │   ├── CharsetCode.h
│   │   ├── Config.cpp
│   │   ├── Config.h
│   │   ├── Core.cpp
│   │   ├── Core.h
│   │   ├── Detect.cpp
│   │   ├── Detect.h
│   │   ├── Exceptions.cpp
│   │   ├── Exceptions.h
│   │   ├── LineBreaks.cpp
│   │   ├── LineBreaks.h
│   │   ├── Messages.cpp
│   │   ├── Messages.h
│   │   ├── TranslatorBase.h
│   │   ├── UCNVHelper.cpp
│   │   ├── UCNVHelper.h
│   │   ├── Vietnamese.cpp
│   │   ├── Vietnamese.h
│   │   ├── cedHelper.h
│   │   └── doublemap.h
│   ├── SmartCharsetConverter/
│   │   ├── CLIHandler.cpp
│   │   ├── CLIHandler.h
│   │   ├── CMakeLists.txt
│   │   ├── DialogMain.cpp
│   │   ├── DialogMain.h
│   │   ├── Resource/
│   │   │   └── lang_embed/
│   │   │       ├── English.json
│   │   │       ├── Simplified Chinese.json
│   │   │       └── Spanish.json
│   │   ├── SmartCharsetConverter.cpp
│   │   ├── SmartCharsetConverter.json
│   │   ├── SmartCharsetConverter.rc
│   │   └── resource.h
│   ├── SmartCharsetConverter-imgui/
│   │   ├── CMakeLists.txt
│   │   ├── FontAnalyzer.cpp
│   │   ├── FontAnalyzer.h
│   │   ├── FontLoader.cpp
│   │   ├── FontLoader.h
│   │   ├── ListView.cpp
│   │   ├── ListView.h
│   │   ├── MainWindow.cpp
│   │   ├── MainWindow.h
│   │   ├── Resource/
│   │   │   └── lang_embed/
│   │   │       ├── English.json
│   │   │       ├── Simplified Chinese.json
│   │   │       └── Spanish.json
│   │   ├── SmartCharsetConverter.rc
│   │   ├── UnicodeTable.cpp
│   │   ├── UnicodeTable.h
│   │   ├── main.cpp
│   │   └── resource.h
│   └── Translator/
│       ├── CMakeLists.txt
│       ├── LanguageService.cpp
│       ├── LanguageService.h
│       ├── StringId.h
│       ├── Translator.cpp
│       ├── Translator.h
│       └── internal/
│           ├── Language.cpp
│           └── Language.h
├── tests/
│   ├── CMakeLists.txt
│   ├── Core_Vietnamese_test.cpp
│   ├── Core_test.cpp
│   ├── Helper.cpp
│   ├── Helper.h
│   ├── LineBreaks_test.cpp
│   ├── String_test.cpp
│   ├── Vietnamese_test.cpp
│   ├── config.h.in
│   ├── icu_test.cpp
│   ├── memory_leak_detection.h
│   ├── memory_leak_detection_win.h
│   └── uchardet_samples_test.cpp
├── third_party/
│   ├── CMakeLists.txt
│   ├── WTL/
│   │   ├── Include/
│   │   │   ├── atlapp.h
│   │   │   ├── atlcrack.h
│   │   │   ├── atlctrls.h
│   │   │   ├── atlctrlw.h
│   │   │   ├── atlctrlx.h
│   │   │   ├── atlddx.h
│   │   │   ├── atldlgs.h
│   │   │   ├── atldwm.h
│   │   │   ├── atlfind.h
│   │   │   ├── atlframe.h
│   │   │   ├── atlgdi.h
│   │   │   ├── atlmisc.h
│   │   │   ├── atlprint.h
│   │   │   ├── atlres.h
│   │   │   ├── atlribbon.h
│   │   │   ├── atlscrl.h
│   │   │   ├── atlsplit.h
│   │   │   ├── atltheme.h
│   │   │   ├── atluser.h
│   │   │   └── atlwinx.h
│   │   └── MS-PL.txt
│   ├── ced/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── autogen.sh
│   │   ├── compact_enc_det/
│   │   │   ├── compact_enc_det.cc
│   │   │   ├── compact_enc_det.h
│   │   │   ├── compact_enc_det_fuzz_test.cc
│   │   │   ├── compact_enc_det_generated_tables.h
│   │   │   ├── compact_enc_det_generated_tables2.h
│   │   │   ├── compact_enc_det_hint_code.cc
│   │   │   ├── compact_enc_det_hint_code.h
│   │   │   ├── compact_enc_det_unittest.cc
│   │   │   └── detail_head_string.inc
│   │   └── util/
│   │       ├── basictypes.h
│   │       ├── case_insensitive_hash.h
│   │       ├── commandlineflags.h
│   │       ├── encodings/
│   │       │   ├── encodings.cc
│   │       │   ├── encodings.h
│   │       │   ├── encodings.pb.h
│   │       │   └── encodings_unittest.cc
│   │       ├── languages/
│   │       │   ├── languages.cc
│   │       │   ├── languages.h
│   │       │   └── languages.pb.h
│   │       ├── logging.h
│   │       ├── port.h
│   │       ├── string_util.h
│   │       └── varsetter.h
│   ├── guicon/
│   │   ├── CMakeLists.txt
│   │   ├── guicon.cpp
│   │   └── guicon.h
│   └── uchardet/
│       ├── WinCodePage_Identifiers.txt
│       ├── uchardet/
│       │   ├── AUTHORS
│       │   ├── CMakeLists.txt
│       │   ├── COPYING
│       │   ├── INSTALL
│       │   ├── Origin_GitHub.url
│       │   ├── README.md
│       │   ├── _GitHub.url
│       │   ├── _GitHub_libchardet.url
│       │   ├── doc/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── README.maintainer
│       │   │   └── uchardet.1
│       │   ├── script/
│       │   │   ├── BuildLangModel.py
│       │   │   ├── BuildLangModelLogs/
│       │   │   │   ├── LangAfricaansModel.log
│       │   │   │   ├── LangArabicModel.log
│       │   │   │   ├── LangBelarusianModel.log
│       │   │   │   ├── LangCroatianModel.log
│       │   │   │   ├── LangCzechModel.log
│       │   │   │   ├── LangDanishModel.log
│       │   │   │   ├── LangEsperantoModel.log
│       │   │   │   ├── LangEstonianModel.log
│       │   │   │   ├── LangFinnishModel.log
│       │   │   │   ├── LangFrenchModel.log
│       │   │   │   ├── LangGermanModel.log
│       │   │   │   ├── LangGreekModel.log
│       │   │   │   ├── LangHungarianModel.log
│       │   │   │   ├── LangIrishModel.log
│       │   │   │   ├── LangItalianModel.log
│       │   │   │   ├── LangLatvianModel.log
│       │   │   │   ├── LangLithuanianModel.log
│       │   │   │   ├── LangMalteseModel.log
│       │   │   │   ├── LangNederlandsModel.log
│       │   │   │   ├── LangPolishModel.log
│       │   │   │   ├── LangPortugueseModel.log
│       │   │   │   ├── LangRomanianModel.log
│       │   │   │   ├── LangSlovakModel.log
│       │   │   │   ├── LangSloveneModel.log
│       │   │   │   ├── LangSpanishModel.log
│       │   │   │   ├── LangSwedishModel.log
│       │   │   │   ├── LangThaiModel.log
│       │   │   │   ├── LangTurkishModel.log
│       │   │   │   └── LangVietnameseModel.log
│       │   │   ├── README
│       │   │   ├── charsets/
│       │   │   │   ├── codepoints.py
│       │   │   │   ├── db.py
│       │   │   │   ├── ibm852.py
│       │   │   │   ├── iso-8859-1.py
│       │   │   │   ├── iso-8859-10.py
│       │   │   │   ├── iso-8859-11.py
│       │   │   │   ├── iso-8859-13.py
│       │   │   │   ├── iso-8859-15.py
│       │   │   │   ├── iso-8859-16.py
│       │   │   │   ├── iso-8859-2.py
│       │   │   │   ├── iso-8859-3.py
│       │   │   │   ├── iso-8859-4.py
│       │   │   │   ├── iso-8859-6.py
│       │   │   │   ├── iso-8859-7.py
│       │   │   │   ├── iso-8859-9.py
│       │   │   │   ├── mac-centraleurope.py
│       │   │   │   ├── tis-620.py
│       │   │   │   ├── viscii.py
│       │   │   │   ├── windows-1250.py
│       │   │   │   ├── windows-1251.py
│       │   │   │   ├── windows-1252.py
│       │   │   │   ├── windows-1253.py
│       │   │   │   ├── windows-1256.py
│       │   │   │   ├── windows-1257.py
│       │   │   │   └── windows-1258.py
│       │   │   ├── debug.sh
│       │   │   ├── gen.sh
│       │   │   ├── header-template.cpp
│       │   │   ├── langs/
│       │   │   │   ├── af.py
│       │   │   │   ├── ar.py
│       │   │   │   ├── be.py
│       │   │   │   ├── cs.py
│       │   │   │   ├── da.py
│       │   │   │   ├── de.py
│       │   │   │   ├── el.py
│       │   │   │   ├── eo.py
│       │   │   │   ├── es.py
│       │   │   │   ├── et.py
│       │   │   │   ├── fi.py
│       │   │   │   ├── fr.py
│       │   │   │   ├── ga.py
│       │   │   │   ├── hr.py
│       │   │   │   ├── hu.py
│       │   │   │   ├── it.py
│       │   │   │   ├── lt.py
│       │   │   │   ├── lv.py
│       │   │   │   ├── mt.py
│       │   │   │   ├── nl.py
│       │   │   │   ├── pl.py
│       │   │   │   ├── pt.py
│       │   │   │   ├── ro.py
│       │   │   │   ├── sk.py
│       │   │   │   ├── sl.py
│       │   │   │   ├── sv.py
│       │   │   │   ├── th.py
│       │   │   │   ├── tr.py
│       │   │   │   └── vi.py
│       │   │   ├── release.sh
│       │   │   ├── requirements.txt
│       │   │   └── win32.sh
│       │   ├── src/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── CharDistribution.cpp
│       │   │   ├── CharDistribution.h
│       │   │   ├── JpCntx.cpp
│       │   │   ├── JpCntx.h
│       │   │   ├── LangModels/
│       │   │   │   ├── LangAfricaansModel.cpp
│       │   │   │   ├── LangArabicModel.cpp
│       │   │   │   ├── LangBelarusianModel.cpp
│       │   │   │   ├── LangBulgarianModel.cpp
│       │   │   │   ├── LangCroatianModel.cpp
│       │   │   │   ├── LangCzechModel.cpp
│       │   │   │   ├── LangDanishModel.cpp
│       │   │   │   ├── LangEsperantoModel.cpp
│       │   │   │   ├── LangEstonianModel.cpp
│       │   │   │   ├── LangFinnishModel.cpp
│       │   │   │   ├── LangFrenchModel.cpp
│       │   │   │   ├── LangGermanModel.cpp
│       │   │   │   ├── LangGreekModel.cpp
│       │   │   │   ├── LangHebrewModel.cpp
│       │   │   │   ├── LangHungarianModel.cpp
│       │   │   │   ├── LangIrishModel.cpp
│       │   │   │   ├── LangItalianModel.cpp
│       │   │   │   ├── LangLatvianModel.cpp
│       │   │   │   ├── LangLithuanianModel.cpp
│       │   │   │   ├── LangMalteseModel.cpp
│       │   │   │   ├── LangNederlandsModel.cpp
│       │   │   │   ├── LangPolishModel.cpp
│       │   │   │   ├── LangPortugueseModel.cpp
│       │   │   │   ├── LangRomanianModel.cpp
│       │   │   │   ├── LangRussianModel.cpp
│       │   │   │   ├── LangSlovakModel.cpp
│       │   │   │   ├── LangSloveneModel.cpp
│       │   │   │   ├── LangSpanishModel.cpp
│       │   │   │   ├── LangSwedishModel.cpp
│       │   │   │   ├── LangThaiModel.cpp
│       │   │   │   ├── LangTurkishModel.cpp
│       │   │   │   └── LangVietnameseModel.cpp
│       │   │   ├── nsBig5Prober.cpp
│       │   │   ├── nsBig5Prober.h
│       │   │   ├── nsCharSetProber.cpp
│       │   │   ├── nsCharSetProber.h
│       │   │   ├── nsCodingStateMachine.h
│       │   │   ├── nsEUCJPProber.cpp
│       │   │   ├── nsEUCJPProber.h
│       │   │   ├── nsEUCKRProber.cpp
│       │   │   ├── nsEUCKRProber.h
│       │   │   ├── nsEUCTWProber.cpp
│       │   │   ├── nsEUCTWProber.h
│       │   │   ├── nsEscCharsetProber.cpp
│       │   │   ├── nsEscCharsetProber.h
│       │   │   ├── nsEscSM.cpp
│       │   │   ├── nsGB18030Prober.cpp
│       │   │   ├── nsGB18030Prober.h
│       │   │   ├── nsGB2312Prober.cpp
│       │   │   ├── nsGB2312Prober.h
│       │   │   ├── nsHebrewProber.cpp
│       │   │   ├── nsHebrewProber.h
│       │   │   ├── nsLatin1Prober.cpp
│       │   │   ├── nsLatin1Prober.h
│       │   │   ├── nsMBCSGroupProber.cpp
│       │   │   ├── nsMBCSGroupProber.h
│       │   │   ├── nsMBCSSM.cpp
│       │   │   ├── nsPkgInt.h
│       │   │   ├── nsSBCSGroupProber.cpp
│       │   │   ├── nsSBCSGroupProber.h
│       │   │   ├── nsSBCharSetProber.cpp
│       │   │   ├── nsSBCharSetProber.h
│       │   │   ├── nsSJISProber.cpp
│       │   │   ├── nsSJISProber.h
│       │   │   ├── nsUTF8Prober.cpp
│       │   │   ├── nsUTF8Prober.h
│       │   │   ├── nsUniversalDetector.cpp
│       │   │   ├── nsUniversalDetector.h
│       │   │   ├── nscore.h
│       │   │   ├── prmem.h
│       │   │   ├── symbols.cmake
│       │   │   ├── tables/
│       │   │   │   ├── Big5Freq.tab
│       │   │   │   ├── EUCKRFreq.tab
│       │   │   │   ├── EUCTWFreq.tab
│       │   │   │   ├── GB18030Freq.tab
│       │   │   │   ├── GB2312Freq.tab
│       │   │   │   └── JISFreq.tab
│       │   │   ├── tools/
│       │   │   │   ├── CMakeLists.txt
│       │   │   │   └── uchardet.cpp
│       │   │   ├── uchardet.cpp
│       │   │   └── uchardet.h
│       │   ├── uchardet.doap
│       │   └── uchardet.pc.in
│       └── version.txt
└── vcpkg.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .clang-format
================================================
---
BasedOnStyle: LLVM

IndentWidth: 4

# 访问说明符(public、private等)的偏移
AccessModifierOffset: -4

# 允许短的块放在同一行(Always 总是将短块合并成一行,Empty 只合并空块)
AllowShortBlocksOnASingleLine: Empty

# 允许短的函数放在同一行: None, InlineOnly(定义在类中), Empty(空函数), Inline(定义在类中,空函数), All
AllowShortFunctionsOnASingleLine: Empty

AllowShortLambdasOnASingleLine: Empty

# 总是在template声明后换行
AlwaysBreakTemplateDeclarations: true

# 禁用include重排序
SortIncludes: false
---
Language: Cpp
# Force pointers to the type for C++.
DerivePointerAlignment: false
PointerAlignment: Right
ColumnLimit: 120
---
Language: Proto
# Don't format .proto files.
DisableFormat: true

================================================
FILE: .github/workflows/cmake-single-platform.yml
================================================
# This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml
name: Build On Windows

on:
  push:
    branches: ["master", "dev"]
  pull_request:
    branches: ["master"]
  # 当创建标签时也触发此工作流
  create:

env:
  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
  BUILD_TYPE: Release

jobs:
  build-and-test:
    # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
    # You can convert this to a matrix build if you need cross-platform coverage.
    # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
    runs-on: windows-latest

    steps:
      - uses: actions/checkout@v4

      - name: Setup anew (or from cache) vcpkg (and does not build any package)
        uses:
          lukka/run-vcpkg@v11 # Always specify the specific _version_ of the
          # action you need, `v11` in this case to stay up
          # to date with fixes on the v11 branch.
        with:
          doNotCache: false

      - name: Configure CMake
        # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
        # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
        run: cmake --preset=default -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

      - name: Build
        # Build your program with the given configuration
        run: |
          cmake --build --preset=default --config ${{env.BUILD_TYPE}} --target SmartCharsetConverter
          cmake --build --preset=default --config ${{env.BUILD_TYPE}} --target CoreUnitTest

      - name: Test
        # Execute tests defined by the CMake configuration.
        # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
        run: ctest --preset=default -C ${{env.BUILD_TYPE}}

      - name: Prepare to Release
        # 只有在创建标签时才执行发布操作
        if: github.event_name == 'create' && startsWith(github.ref, 'refs/tags/')
        run: |
          cd ${{github.workspace}}/scripts
          python extract_change_log.py --tag=${{github.ref_name}}
          cd ${{github.workspace}}/build/src/SmartCharsetConverter/Release
          mv SmartCharsetConverter.exe 'SmartCharsetConverter ${{github.ref_name}}.exe'
          Compress-Archive -Path 'SmartCharsetConverter ${{github.ref_name}}.exe' -DestinationPath 'SmartCharsetConverter ${{github.ref_name}}.zip'

      - name: Release
        # 只有在创建标签时才执行发布操作
        if: github.event_name == 'create' && startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v2
        with:
          name: SmartCharsetConverter ${{github.ref_name}}
          fail_on_unmatched_files: true
          draft: true
          body_path: ./build/CHANGELOG.txt
          files: |
            ./build/src/SmartCharsetConverter/Release/SmartCharsetConverter ${{github.ref_name}}.zip


================================================
FILE: .gitignore
================================================
.idea/
.vscode/
output/
build/
vcpkg_installed/
*.aps


================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.11)

# C++17
set(CMAKE_CXX_STANDARD 17)

project(SmartCharsetConverter)

# 添加unicode宏
add_definitions(-DUNICODE -D_UNICODE)

add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options(-WX)

if(MSVC)
    add_compile_options(/MP)

    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MT")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT")

    set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
    set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")

    set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
endif()

# =============================================
add_subdirectory(third_party)
add_subdirectory(src)

enable_testing()
add_subdirectory(tests)


================================================
FILE: CMakePresets.json
================================================
{
	"version": 8,
	"configurePresets": [
		{
			"name": "default",
			"binaryDir": "${sourceDir}/build",
			"cacheVariables": {
				"VCPKG_TARGET_TRIPLET": "x64-windows-static",
				"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
			}
		}
	],
	"buildPresets": [
		{
			"name": "default",
			"configurePreset": "default"
		}
	],
	"testPresets": [
		{
			"name": "default",
			"configurePreset": "default",
			"output": {
				"outputOnFailure": true
			},
			"execution": {
				"noTestsAction": "error",
				"stopOnFailure": true
			}
		}
	]
}

================================================
FILE: README-en.md
================================================
# SmartCharsetConverter

![workflow](https://github.com/tomwillow/SmartCharsetConverter/actions/workflows/cmake-single-platform.yml/badge.svg)

[English](README-en.md) / [Chinese](README.md)

This program is used to automatically detect the encoding of files and convert its encoding to UTF-8/UTF-8 BOM/GB18030 etc.

Function:

- Batch conversion to UTF-8/UTF-8 BOM/GB18030, etc.
- Convert line breaks to CRLF/LF/CR
- Check whether characters are lost to ensure that the conversion process is reversible
- Support command line (use $ ./SmartCharsetConverter --help for details)
- Multi-language support (click the "hammer" button in the bottom right corner to switch languages)
- Support Vietnamese charset(VNI/VPS/VISCII/TCVN3)(Currently unable to detect these charset. please use the "No File Filter" mode)

Supported Platform:

- Win10 x64
- Win7 x64 (haven’t tried it yet)

![img](snapshot/v0.8-english.png)

# Download

[https://github.com/tomwillow/SmartCharsetConverter/releases](https://github.com/tomwillow/SmartCharsetConverter/releases)

# Special Advantage

Charset detection is a well-known and difficult problem.

Therefore, most of the charset convert programs are GBK->UTF-8, GBK->BIG5. In this case, you must know what encoding your text is in advance, otherwise it will be garbled. Moreover, text that has been converted once will be garbled if it is converted again.

After comparing many charset detection libraries, I selected the modified version of uchardet used by Notepad3. This modified version of uchardet has been carefully tuned by the author of Notepad3, and its accuracy is higher than the original uchardet! I also used the charset detection function provided by the icu library, and combines the comprehensive judgment of uchardet+icu to give the detection result!

Although it cannot be said that the character set detection is 100% correct, the accuracy rate is also very high! You will know exactly how high it is when you try it.

Precisely because the biggest problem of character set detection is solved, all the problems of the "traditional transcoding program" mentioned above do not exist in this program! It doesn’t matter what character set you originally used, just say what you want!

# Version

v0.1 Implements basic functions: can detect charset and convert

v0.2 Add windows-1252 support. Add the option of "No Filter Files" and "Smart File Detection".

v0.3 "Add Folder" can now remember the last selected path. The list box now supports dragging in files and folders.

v0.4 Fix the bug "Reason: ucnv error. code=15". Added ISO-8859-1 support.

v0.41 Fix the bug where only BOM text recognition is wrong. Now empty text will not report an error.

v0.5 Now you can cancel midway when dragging a large number of files to the list box. Now you can click the Cancel button during the conversion.

v0.51 Add multiple supported charset: Big5, SHIFT-JIS, etc.

v0.6 Check if characters will be lost when converting.

v0.61 Select "No File Filter" mode to forcely join files. Right-click items in the list box can select Original Encoding.

v0.62 Support dragging files/folders to the program icon.

v0.7 Support command line. Use $ ./SmartCharsetConverter --help to view the command line parameters.

v0.71 Fix the bug that the command line not work.

v0.72 solves the problem of getting stuck when adding large files (only the first 100KB of the file is detected).
The extension filter mode now supports more patterns (supports separation by `*.` `.` `space` `|`). Fixed other issues with extension filtering mode.

v0.8 Rearrange the interface (thanks to [Carlos Sánchez](https://github.com/c-sanchez)).
Add configuration file, and changing settings will trigger the saving of configuration file.
Support multiple languages (built-in Simplified Chinese and English).
Add multi-language selection(to click "hammer" button - Language).

v0.81 Add Spanish language pack support (thanks to [Carlos Sánchez](https://github.com/c-sanchez)).

v0.82 Check if characters will be lost when specifying encoding manually.

v0.9 Support multiple Vietnamese charset converting: VNI/VPS/VISICII/TCVN3

v0.9.1 bugfix: fixed the error of "ucnv error. code=11" due to invalid trucated string piece.

v0.9.2 Support Win7 x64 OS. Compiles into a single exe file.

v0.9.3 [Issue 14]Change the Chinese character "未知" to "Unknown" when the charset is not detected.
Fix the issue where error characters during charset detection in "no filtering" mode cause an "UCNV error," preventing files from being added.

# Build

1. Confirm the compilation environment: win10+ x64, Visual Studio 2019+, cmake.
2. Install vcpkg and set correct environment variable VCPKG_ROOT.
3. Execute config_on_win.bat to generate .sln.
4. Open ./build/SmartCharsetConverter.sln.

# Add language pack

> Language packs only affect the interface of the program and have nothing to do with the functions of the program.

If you want to add a new language pack to this program, you can follow these steps:

1. Find the xxx.json files under src/Resource/lang_embed.
2. Copy the xxx.json file and modify its content. The new json file can be rename arbitrarily, because the program does not depend on the file name of the language file.

> The xxx.json file must be UTF-8 encoding.

3. Modify the `langId` field: Download the pdf from [[MS-LCID]: Windows Language Code Identifier (LCID) Reference](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f?redirectedfrom=MSDN), find the section `2.2 LCID Structure - Language ID (2 bytes)`, and find the Language ID corresponding to the target language. `For example: 0x409 corresponds to en-US, 0x804 corresponds to zh-CN. `Then convert hexadecimal to decimal and fill in the `langId` field. `For example, 0x409 is filled in with 1033, and 0x804 is filled with 2052`.
   This Language ID is related to the user's operating system. If filled in correctly, the corresponding language file will be automatically loaded according to the operating system settings when the program starts (the prerequisite is that the language has not been set in the configuration file. If the language has been set in, the `language` field at the configuration file is preferred).
4. Place your xxx.json language file in the `lang` directory of the directory where SmartCharsetConverter.exe is located (if it does not exist, create a new). The program will automatically check and load it when it starts.

> Note: There are some language packages built into the program (located in `src/Resource/lang_embed`). If the `language` field of the language package in the lang directory is the same as one built-in language package, the external language package json file will be preferred.

Now you can launch the program and see the results!

> If you want to make your language pack built into the program, you can submit a pull request or contact the author (tomwillow@qq.com) to make it built-in.

# TODO

- Check the character set again before conversion to avoid conversion errors after the user changes the character set after loading.
- Add "Convert to xxx encoding" to the right-click menu to enable manual converting of single/multiple files.
- Add a refresh button.
- Add maximize/minimize buttons, and flexibly control the size of ListView while resizing.
- Add the main menu bar to display menu items such as "Settings", "About".
- Replace the error MessageBox to a custom Dialog for displaying the complete error information and allow copy operation.

# Reference

[ICU](https://icu.unicode.org/)

[WTL](https://sourceforge.net/projects/wtl)

[uchardet](https://github.com/rizonesoft/Notepad3/tree/master/src/uchardet)

# Thanks

Thanks to [Carlos Sánchez](https://github.com/c-sanchez) for providing the interface design and Spanish language pack.

# E-mail

tomwillow@qq.com

# WeChat Group

If you have any questions or suggestions, please feel free to add the author on WeChat `tomwillow`. Note: "SmartCharsetConverter" is introduced into the group according to the guidelines.

If you think this project is good, please give it a star!


================================================
FILE: README.md
================================================
# 智能编码集转换器

![workflow](https://github.com/tomwillow/SmartCharsetConverter/actions/workflows/cmake-single-platform.yml/badge.svg)

[English](README-en.md) / [Chinese](README.md)

本程序用于自动识别文件夹下所有文本文件,自动识别原编码(不必担心反复转码出错了),批量转换到 UTF-8 等字符集。

功能:

- 批量转 UTF-8/UTF-8 BOM/GB18030 等
- 批量转 CRLF/LF/CR 换行符
- 转换时会检查是否丢失字符,确保转换过程可逆
- 支持命令行(使用 $ ./SmartCharsetConverter --help 查看)
- 多语言支持(点击右下角“锤子”按钮切换语言)
- 支持越南语字符集(VNI/VPS/VISCII/TCVN3)和其他字符集互转(目前还不能自动探测这几个字符集,请使用“不过滤”模式)

运行要求:

- Win10 x64
- Win7 x64(理论上可以,没尝试)

![img](snapshot/v0.8-chinese.png "截图")

# 下载

[https://github.com/tomwillow/SmartCharsetConverter/releases](https://github.com/tomwillow/SmartCharsetConverter/releases)

# 特别优点

字符集探测是著名的老大难问题,就是说,怎样在不知道字符编码的情况下,探测出文本是什么编码,什么字符集。这个问题很难。

所以,你看到的绝大多数转字符集的程序,都是 GBK->UTF-8,GBK->BIG5,这种,必须要你提前知道你的文本是什么编码,否则就会乱码。而且,转过一次的文本,再转一次,也会乱码。

我在对比了诸多字符集探测库之后,选定了 Notepad3 使用的魔改版 uchardet,这个魔改版 uchardet 经过 Notepad3 作者精心调教,精度比原版 uchardet 更高!并且又使用了 icu 库提供的字符集探测功能,结合 uchardet+icu 两者综合判断给出探测结果!

虽然不能说做到百分百地把字符集探测正确,但正确率也是非常高的!具体多高你试试就知道了。

也正因为解决了字符集探测这个最大的问题,所以上面提到的这些“传统转码程序”的问题,在本程序中通通都不存在!不用管你原来是什么字符集,你只说你要什么就行啦!

# 版本记录

v0.1 实现基本功能:可以探测字符集,转换字符集

v0.2 增加 windows-1252 支持。文件现在可以选择“不过滤”和“智能识别”。

v0.3 “添加文件夹”现在可以记住上一次选的路径了。现在列表框支持拖入文件和文件夹了。

v0.4 修复“原因: ucnv 出错。code=15”的 bug。增加 ISO-8859-1 支持。

v0.41 修复只有 BOM 的文本识别出错的 bug。现在空文本不会报错了。

v0.5 现在拖动大量文件到列表框时可以中途取消了。现在转换中途可以点取消按钮了。

v0.51 增加多个支持的字符集:Big5, SHIFT-JIS 等。

v0.6 现在转换时会检查是否会丢失字符。

v0.61 现在选择“不过滤”模式可以强行加入文件。并且,在列表框里右键-指定原编码 可以手动指定字符集。

v0.62 现在支持拖拽文件/文件夹到程序图标上了。

v0.7 支持命令行。使用 $ ./SmartCharsetConverter --help 查看命令行参数。

v0.71 修复命令行用不了的 bug。

v0.72 解决添加大文件会卡死的问题(只探测文件前 100KB)。
后缀过滤模式现在支持更多的模式了(支持以 `*.` `.` `空格` `|`分隔)。修复后缀过滤模式的其他问题。

v0.8 重新编排界面(感谢[Carlos Sánchez](https://github.com/c-sanchez))。
增加配置文件,现在界面改动会保留在配置文件中了。
支持多语言(内置简体中文和英文)。增加多语言选择。

v0.81 增加西班牙语支持(感谢[Carlos Sánchez](https://github.com/c-sanchez))。

v0.82 现在手动指定字符集会检查是否丢失字符。

v0.9 支持多个越南语字符集的转换:VNI/VPS/VISICII/TCVN3

v0.9.1 bugfix: 修复由于截取字符片段导致的"ucnv error. code=11"出错。

v0.9.2 现在可以支持Win7 x64系统了。现在程序编译出来只有一个单exe文件了。

v0.9.3 [Issue 14]未探测到字符集时显示的中文字符“未知”改成“Unknown”。
解决“不过滤”模式下,探测字符集报错“UCNV出错”导致无法添加文件的问题。

# 构建方法

1. 确认编译环境:win10+ x64, Visual Studio 2019+, cmake。
2. 安装 vcpkg,正确设置 VCPKG_ROOT 环境变量。
3. 执行 config_on_win.bat 生成.sln。
4. 打开 ./build/SmartCharsetConverter.sln。

# 添加语言包

> 语言包只影响程序的界面,和程序的功能无关。

如果您想为本程序添加新的语言包,可以遵循以下步骤:

1. 在 src/Resource/lang_embed 下找到 xxx.json 文件。
2. 复制 xxx.json 文件并修改内容。文件名可以随意取,程序并不依赖语言文件的文件名。

> xxx.json 文件必须是 utf-8 编码。

3. 修改内容时注意 langId 字段,从[[MS-LCID]: Windows Language Code Identifier (LCID) Reference](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f?redirectedfrom=MSDN)处下载 pdf,翻阅至 `2.2  LCID Structure - Language ID (2 bytes)`一节,找到目标语言对应的 Language ID。`例如:0x409对应于en-US,0x804对应于zh-CN。`然后把 16 进制转换为 10 进制填入 langId 字段。`例如0x409则填入1033,0x804则填入2052`。
   这个 Language ID 和操作系统设置有关,正确填写的话,程序启动时会根据操作系统设置自动加载对应的语言文件(前提条件是没有在程序中设置过语言,如果在程序中设置过语言,那么以设置的为准)。

> 如果你不知道 langId 应该填什么,那么可以填 0。

4. 把你的 xxx.json 语言文件放置在 SmartCharsetConverter.exe 所在目录的 lang 目录(如果没有则新建一个)下,程序启动时会自动检查并加载。

> 注意:程序中内置了一些语言包(位于 `src/Resource/lang_embed`),如果 lang 目录下的语言包的 language 字段和内置的某个语言包一样,那么程序在启动时将以 lang 目录下的语言包文件为准。

现在你可以启动程序查看效果了!

> 如果想要让程序内置你的语言包,可以提 pull requests 或者联系作者(tomwillow@qq.com)来给你内置。

# TODO

- 转换前再次检查一次字符集,已免出现加载后用户更改了字符集后转换出错的情况。
- 右键菜单加入“转换到 xxx 编码”,以实现单个/多个文件手动转码。
- 增加一个刷新按钮。
- 添加最大化/最小化按钮,程序缩放时弹性控制 ListView 的大小。
- 添加菜单栏以显示“设置”“关于”等菜单项。
- 报错的 MessageBox 修改为自定义的 Dialog,以显示完整的报错信息,并且允许从中复制内容。

# Reference

[ICU](https://icu.unicode.org/)

[WTL](https://sourceforge.net/projects/wtl)

[uchardet](https://github.com/rizonesoft/Notepad3/tree/master/src/uchardet)

# 致谢

感谢[Carlos Sánchez](https://github.com/c-sanchez)提供的界面设计和西班牙语语言包。

# E-mail

tomwillow@qq.com

# 微信交流群

如果您在使用中有疑问,或者有意见建议,欢迎加作者微信 tomwillow。备注“智能编码集转换器”按照指引进群。

如果您觉得此项目不错,请赏颗星吧!


================================================
FILE: config_on_win.bat
================================================
cmake --preset=default
pause

================================================
FILE: sample/expect_pass/[EUC-JP]readme.txt
================================================
School DaysΥե˴ޤޤƤư衦ʤwmv˥ݡȤץ

ưĶ
Microsoft .NET Framework Version 1.1ɬפǤ
󥽡륢ץꥱǤ(ʹӤǤĤäΤǡ)


School DaysΥե˴ޤޤƤư衦ʤꤵ줿ե
ǥ쥯ȥwmvեǥݡȤޤ
Ϥե̾wmvإåˤեɣĤǺޤ
ư衦ʤϤ줾̡wmvեˤʤäƤͤǤ
åץǡФƤ٥ݡȤľפȻפޤ
ưǧϡֽץ v1.05AפǹԤäƤޤ

ˡ
sd_exp.exe [*.gpk]

㡧
sd_exp SCENE.GPK.010



================================================
FILE: sample/expect_pass/[gb18030]你还戴着这副眼镜.txt
================================================

---------------------------------------------
鼮֮TXT
ַhttp://www.skyyi.cn/index.php
[Ϊ]
---------------------------------------------
ѣڿС˵ͬʱעⲻҪ۹ȣ


       






, һǴ¸绪ġ



һдŸ, ǰ, ڷɻд, ˵, ϣһԶ¸绪, ̫౯ˡ



һ˾ꡣ



ڹʶ, ǸŻˡ ˶ܺ, չһ,˵:ҵһܺõˡ˵:ǸΪʲô?
˵仰ʱ, ΢Ц, , ֻ±ܾ



ûоܾ



֪߲ûһŮ, ȻһͷԽȥ



һ, ȥ, , :ûŮ?



ײ



֧, DzҪټ, ȥ߰ɡȻ˵



һ֧, ᲻뿪



ѡߡ 쿪ʼ, ʥ, Ϧ, ˽, ˵, 򶼱µضȹ



Ϊһ, ֻռ, ? ÿڶ, ˵Ҫ, ʼջǻصߡʼDz뿪ǸʮŮѵġ



ͺˡ˵



ûܵ, 㲻Ҫ˵ʡ



Ůʼ֪Ĵ, 绰, ˵:Dz뿪ҵġ



еഺ> 
һ, ᵽԿ, ʹ໻ġ



һ˽, ˵:һ, һҪ, ԺҲ㡣



Ӧˡ



˽, ڼֱʮʱûг֡˺ܶܶ,绰̨, :㲻ټҡ



ʮӺ, ҴҸ, ݺݵһ, ۾ѵ, һˡ

˵:Ҳܸʲô, Ҳ뵢㡣



ڶ, ۾һµ۾, ȥһơ



ûٳ֪֡, ˶ϵʱ



ѹȥ, ¸绪̽Ҫõѡ



һ֮, ص, ¿ʼ



Ŭع, ϣ֪



һ, ڽһǰһ۾



Ҽĸһ?



ͷ



û뵽Ȼ͵۾, ΨһĶ



, ˵, ˡ



Ҳ, ޸¸绪ĺѵĸ硣



ȥʥ, ¸绪,  Ծɴ͵Ǹ۾



㻹⸱۾?



ͷ



Ϊʲôȥ? Ҹ, ڲô۾˵



û˽, Ͳܴ۾΢Ц˵



ò˵



ˡظ



ҽˡȻػش



ŶӦһ, ײ



˵:ഺ--ҪԵȴ, ѵĵȴ, ʱ䲥Ū


---------------------------------------------
鼮֮TXT
ַhttp://www.skyyi.cn/index.php
[Ϊ]
---------------------------------------------
ѣڿС˵ͬʱעⲻҪ۹ȣ


================================================
FILE: sample/expect_pass/[utf-8].txt
================================================
Språk: Norsk
Γλώσσα: Ελληνικά
Язык: Русский
언어 : 한국어
言語: 日本語
Langage : Français


================================================
FILE: sample/not_pass_yet/[GB18030]DialogAnimation.h
================================================
#pragma once
#include <vector>
#include <Windows.h>
#include "..\Common\String.h"

class TElement;
namespace DialogAnimation
{
	enum enumListBoxItemType{ D, V, A };
	String GetTypeName(enumListBoxItemType type);

	enum enumListBoxItemValueType{ X, Y, PHI };
	String GetUnitName(enumListBoxItemType type, enumListBoxItemValueType value_type);

	struct TListBoxItem
	{
		int id;
		int index_of_point;
		enumListBoxItemType type;//P,V,A
		enumListBoxItemValueType value_type;//X,Y,PHI
		String s;//Ŀ
		String sUnit;
		std::vector<double> data;
		TElement *pElement;
	};

	INT_PTR CALLBACK DlgAnimationProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);

}

================================================
FILE: sample/not_pass_yet/[GB18030]LogRecord.h
================================================
#pragma once

#include <TimeStamp.h>
#include <tstring.h>

#include <mutex>
#include <sstream>

class LogRecord {
public:
    static void SetLogFileName(std::tstring filename);
    static void AddBuffer(std::tstring content);

    void flush();

private:
    static std::tstring filename;
    static std::mutex m;

    static std::tstring buf;
};

extern LogRecord logRecord;

// ָ
inline LogRecord &operator<<(LogRecord &logRecord, void *p) {
    logRecord.AddBuffer(std::to_tstring((INT_PTR)p));
    return logRecord;
}

// 
LogRecord &operator<<(LogRecord &logRecord, HWND hWnd);

// ʱ
LogRecord &operator<<(LogRecord &logRecord, TimeStamp timeStamp);

// ַ
inline LogRecord &operator<<(LogRecord &logRecord, const wchar_t s[]) {
    logRecord.AddBuffer(to_tstring(s));
    return logRecord;
}

// ansiַ
inline LogRecord &operator<<(LogRecord &logRecord, const char s[]) {
    logRecord.AddBuffer(to_tstring(s));
    return logRecord;
}

inline LogRecord &operator<<(LogRecord &logRecord, const std::tstring &s) {
    logRecord.AddBuffer(s);
    return logRecord;
}

template <typename T> inline LogRecord &operator<<(LogRecord &logRecord, const T &t) {
    logRecord.AddBuffer(std::to_tstring(t));
    return logRecord;
}

inline LogRecord &operator<<(LogRecord &logRecord, LogRecord &(*func)(LogRecord &)) { return func(logRecord); }

inline LogRecord &endl(LogRecord &logRecord) {
    logRecord.AddBuffer(TEXT("\r\n"));
    logRecord.flush();
    return logRecord;
}

#define LOG logRecord

================================================
FILE: sample/not_pass_yet/[GB18030]TBarTool_GB.cpp
================================================
#pragma once
#include "TBarTool.h"

#include "..\Control\TTreeViewContent.h"
#include "..\Element\TShape.h"
#include "..\Element\TBar.h"
#include "..\Element\TConstraintCoincide.h"

TBarTool::TBarTool()
{
	myElementType = ELEMENT_BAR;

	sType = TEXT("");
	bCanBuildCoincide = true;
}


TBarTool::~TBarTool()
{
}

TElement * TBarTool::AddIntoShape(TRealLine &RealLine)
{
	RealLine.vecDpt.push_back(RealLine.GetRelativePointByIndex(0));
	RealLine.vecDpt.push_back(RealLine.GetRelativePointByIndex(1));

	RealLine.eType = myElementType;
	return pShape->AddElement((TBar *)&RealLine);
}

void TBarTool::AddIntoTreeViewContent(TElement *Element, int id)
{
	if (Element->eType == ELEMENT_REALLINE)
	{
		Element->eType = myElementType;
		TBar Bar;
		Bar= *(TRealLine*)Element;
		pTreeViewContent->AddItem(&Bar, pShape->iNextId);
	}
	else
		TLineTool::AddIntoTreeViewContent(Element, id);
}

//void TBarTool::AddCoincide(TConstraintCoincide *pCoincide, int id, TConfiguration *pConfig)
//{
//	AddIntoTreeViewContent(pCoincide, id);
//	pShape->AddElement(pCoincide);
//}

================================================
FILE: sample/not_pass_yet/[GB18030]TDraw.h
================================================
#pragma once
#include <vector>
#include <Windows.h>

#pragma  comment(lib, "gdiplus.lib")
#include <comdef.h>
#include <gdiplus.h>

#include "..\Common\DPOINT.h"

class TConfiguration;
class TElement;
class TBar;
class TLine;
class TRealLine;
class TSlideway;
class TSlider;
class TFramePoint;
class TConstraintCoincide;
class TConstraintColinear;
class TPolylineBar;
class TDraw
{
private:
	ULONG_PTR gdiplusStartupToken;
	struct HSB
	{
		float H, S, B;
	};
public:
	TDraw();
	~TDraw();
	void TDraw::DrawLogo(HINSTANCE hInst, UINT nID, LPCTSTR sType, HDC hdc, const RECT &ClientRect);
	BOOL TDraw::ImageFromIDResource(HINSTANCE hInst, UINT nID, LPCTSTR sType, Gdiplus::Image *&pImg);

	static void TDraw::MoveByDelta(POINT apt[], int apt_num, long dx, long dy);
	static void TDraw::MoveByDelta(std::vector<POINT> &vecpt, long dx, long dy);
	static void TDraw::Move(POINT apt[], int apt_num, double angle, double dist);
	static void TDraw::MoveRect(RECT &rc, int left, int top);
	static void TDraw::Rotate(POINT apt[], int apt_num, int Ox, int Oy, double theta);
	static void TDraw::MirrorX(POINT apt[], int apt_num, int Oy);
	static void TDraw::GetBoundingBox(POINT apt[], int apt_num, RECT *rect, bool YPlusIsUP);
	static void TDraw::GetBoundingBox(std::vector<DPOINT> &vecdpt, RECT *rect);
	static void TDraw::GetBoundingBox(std::vector<POINT> &vecpt, RECT *rect);
	static double TDraw::Distance(DPOINT pt1, DPOINT pt2);
	static double TDraw::Distance(POINT pt1, POINT pt2);
	static double TDraw::DistanceScreen(const DPOINT &dpt1, const DPOINT &dpt2, const TConfiguration *pConfig);
	static DPOINT TDraw::GetAbsolute(const DPOINT &dpt, const DPOINT &Org, double angle);
	static void TDraw::GetAbsoluteReal(std::vector<DPOINT> &vecdptResult, const std::vector<DPOINT> &vecdpt, const DPOINT &Org, double angle);
	static void TDraw::GetAbsoluteScreen(std::vector<POINT> &vecptResult, const std::vector<DPOINT> &vecdpt, const DPOINT &Org, double angle, const TConfiguration *pConfig);
	static DPOINT TDraw::GetRelative(const DPOINT &dpt, const DPOINT &Org, double angle);
	static bool TDraw::GetIntersection(const POINT &ptL1Begin, const POINT &ptL1End, const POINT &ptL2Begin, const  POINT &ptL2End, POINT &ptIntersection);
	static bool TDraw::GetIntersection(const DPOINT &dptL1Begin, const DPOINT &dptL1End, const DPOINT &dptL2Begin, const  DPOINT &dptL2End, DPOINT &dptIntersection);

	static RECT TDraw::GetMarginRect(RECT rect, int margin);
	static void TDraw::SetMarginRect(RECT *rect, int margin);
	static RECT TDraw::GetMarginCtrlRect(const RECT &rect, int margin);
	static RECT TDraw::GetMarginRect(RECT rect, LONG margin_left, LONG margin_top, LONG margin_right, LONG margin_bottom);
	static POINT TDraw::GetCenter(const POINT &pt1,const POINT &pt2);
	static DPOINT TDraw::GetCenter(const DPOINT &pt1,const DPOINT &pt2);
	static bool TDraw::ShowConstraintCoincideDotLine(TElement *element, const TConfiguration *pConfig);
	static bool TDraw::ShowConstraintColinearDotLine(const TConstraintColinear *pColinear, POINT &ptCenter1, POINT &ptCenter2, const TConfiguration *pConfig);

	static COLORREF TDraw::GetBrighterColor(COLORREF cr);

	static void TDraw::DrawFramePoint(HDC hdc, TFramePoint *pFramePoint,const TConfiguration *Config);
	static void TDraw::DrawBar(HDC hdc, TBar *Bar,const TConfiguration *Config);
	static void TDraw::DrawBarSimple(HDC hdc, TBar *Bar, const TConfiguration *Config);
	static void TDraw::DrawBarTranslucent(HDC hdc, TBar *pBar, const TConfiguration *pConfig);
	static void TDraw::DrawBarTranslucent(HDC hdc, POINT &ptBegin, POINT &ptEnd, double angle, unsigned char alpha, LOGPEN logpen, const TConfiguration *pConfig);
	static void TDraw::DrawPolylineBar(HDC hdc, TPolylineBar *PolylineBar, const TConfiguration *pConfig);
	static void TDraw::DrawPolylineBarSimple(HDC hdc, TPolylineBar *pPolylineBar, const TConfiguration *pConfig);
	static void TDraw::DrawPolylineBarTranslucent(HDC hdc, TPolylineBar *pPolylineBar, const TConfiguration *pConfig);
	static void TDraw::DrawRealLine(HDC hdc, TRealLine &RealLine, const TConfiguration *Config);
	static void TDraw::DrawRealLine(HDC hdc, DPOINT ptBegin, DPOINT ptEnd, LOGPEN logpen,const TConfiguration *Config);
	static void TDraw::DrawSlideway(HDC hdc, TSlideway *Slidewayconst, const TConfiguration *Config);
	static void TDraw::DrawSlidewaySingle(HDC hdc, const LOGPEN &logpen, const DPOINT &dptBegin, const DPOINT &dptEnd, double dAngle, int ShadowQuadrant, int ShadowLength, const TConfiguration *pConfig);
	static void TDraw::DrawSlider(HDC hdc, TSlider *pSlider, const TConfiguration *pConfig);
	static void TDraw::DrawConstraintCoincide(HDC hdc, DPOINT dpt0, DPOINT dpt1,const LOGPEN &logpen, const TConfiguration *pConfig);
	static void TDraw::DrawConstraintCoincide(HDC hdc, TConstraintCoincide *pCoincide, const TConfiguration *pConfig);
	static void TDraw::DrawConstraintColinear_inner(HDC hdc, const POINT &pt1, const POINT &pt2,LOGPEN logpen, const TConfiguration *pConfig);
	static void TDraw::DrawConstraintColinear(HDC hdc, TConstraintColinear *pColinear, const TConfiguration *pConfig);

	static void TDraw::DrawArc(HDC hdc, const POINT &pt, int r, const POINT &pt1, const POINT &pt2, bool bAlwaysDrawAngleBetween);
	static void TDraw::DrawPie(HDC hdc, const POINT &pt, int r, const POINT &pt1, const POINT &pt2,bool bAlwaysDrawAngleBetween);
	static void TDraw::DrawPie(HDC hdc, const POINT &pt, int r, const POINT &pt1, const POINT &pt2, const LOGPEN &logpen, const COLORREF &crColor);
	static void TDraw::DrawRect(HDC hdc, const RECT &rect,const LOGPEN &logpen);
	static void TDraw::DrawRect(HDC hdc, const RECT &rect,const LOGPEN &logpen, COLORREF crBk);
	static void TDraw::DrawPickSquare(HDC hdc, POINT pt);
	static void TDraw::DrawLine(HDC hdc, POINT ptFirstPos, POINT ptSecondPos);
	static void TDraw::DrawLine(HDC hdc, POINT ptFirstPos, POINT ptSecondPos, const LOGPEN &logpen);
	static void TDraw::DrawLine(HDC hdc, TLine Line);
	static void TDraw::DrawPolyline(HDC hdc, const POINT *apt, int count, LOGPEN &logpen);

	static void TDraw::DrawCircle(HDC hdc, POINT pt, int r);
	static void TDraw::DrawCircle(HDC hdc, POINT pt, int r, LOGPEN logpen);
	static void TDraw::DrawCross(HDC hdc, POINT pt, int size, LOGPEN Style);
	static void TDraw::DrawArrow(HDC hdc, POINT ptBegin, POINT ptEnd, int length, int width);
	static void TDraw::DrawAxes(HDC hdc, int Ox, int Oy, COLORREF crColor);

	static void TDraw::CalcBarLineEndpoint(POINT &ptBegin, POINT &ptEnd, int distBegin, int distEnd);
	static void TDraw::CalcPolylineBarRgn(HRGN &hRgn, const std::vector<DPOINT> &vecDpt, DPOINT dpt, double angle, const TConfiguration *pConfig);
	static void TDraw::CalcPolylineBarRgn(HRGN &hRgn, TPolylineBar *pPolylineBar, const TConfiguration *pConfig);
	static void TDraw::CalcBarRectCoor(POINT ptResult[4], const POINT &ptBegin, const POINT &ptEnd, double angle, int width);
	static void TDraw::CalcSliderRectCoor(POINT aptResult[4], const POINT &pt, double angle, const TConfiguration *pConfig);
	static void TDraw::FillRect(HDC hdc, RECT *rect, COLORREF crColor);
	static void TDraw::DrawGrid(HDC hdc, const RECT &rect, POINT ptOrg, COLORREF crGridBig, COLORREF crGridSmall, const TConfiguration *pConfig);

	static void TDraw::DrawTips(HDC hdc, POINT &ptMouse,const RECT &rcLimited, const TCHAR text[], TConfiguration *pConfig);
	static void TDraw::DrawAdjustedText(HDC hdc, POINT &ptMouse, const RECT &rcLimited, const TCHAR text[], LONG dist, bool DrawBorder, TConfiguration *pConfig);
	static POINT TDraw::GetSystemFontSize(HDC hdc, const TCHAR text[]);
	static void TDraw::DrawSystemFontText(HDC hdc, const TCHAR text[], RECT &rect, COLORREF color, UINT format);
	static void TDraw::DrawSystemFontTextVertical(HDC hdc, const TCHAR text[], RECT &rect, COLORREF color, UINT format);
	static void TDraw::DrawTextAdvance(HDC hdc,const TCHAR text[], RECT *rect, long FontSize, int FontWeight, unsigned long color, const TCHAR FontName[], UINT format,int cEscapement=0,int cOrientation=0);

	static void TDraw::DrawSection(HDC hdc, int x1, int y1, int x2, int y2, int d, double angleDEG);
	static void TDraw::DrawSection(HDC hdc, POINT apt[], int apt_num, int d, double angleDEG);
	static double TDraw::GetAngleFromPointReal(DPOINT ptO, DPOINT pt);
	static double TDraw::GetAngleBetweenPointReal(const DPOINT &pt1, const DPOINT &ptO, const DPOINT &pt2);
	static double TDraw::GetAngleBetweenPointScreen(const POINT &pt1, const POINT &ptO, const POINT &pt2);
	static double TDraw::GetAngleFromPointScreen(POINT pt0, POINT pt);
	static void TDraw::ClientPosToScreen(HWND hWnd, POINT *pt);
	static int TDraw::DPOINT2POINTXLEN(double x1, double x2, double x_min, double x_max, const RECT &rect);
	static int TDraw::DPOINT2POINTYLEN(double y1, double y2, double y_min, double y_max, const RECT &rect);
	static int TDraw::DPOINT2POINTX(double x, double x_min, double x_max, const RECT &rect);
	static int TDraw::DPOINT2POINTY(double y, double y_min, double y_max, const RECT &rect);
	static POINT TDraw::DPOINT2POINT(DPOINT &dpt, double x_min, double x_max, double y_min, double y_max,const RECT &rect);
	static DPOINT TDraw::POINT2DPOINT(POINT &pt, double x_min, double x_max, double y_min, double y_max,const RECT &rect);
	static void TDraw::MakeRect(RECT &rcResult, double x_min, double x_max, double y_min, double y_max, const TConfiguration *pConfig);
	static void TDraw::GetCenter(POINT &ptResult, const RECT &rect);

	//ʰȡϵ
	static bool TDraw::PointInPolylineBar(POINT ptPos, TPolylineBar *pPolylineBar,const TConfiguration *pConfig);
	static bool TDraw::PointInFramePoint(POINT ptFramePoint, POINT pt, const TConfiguration *pConfig);
	static bool TDraw::PointInRgn(POINT *ptRgn, int RgnCount, POINT pt);
	static bool TDraw::PointInRealLine(POINT ptPos, TRealLine *pRealLine,const TConfiguration *pConfig);
	static bool TDraw::PointInSlider(POINT ptPos, TSlider *pSlider, const TConfiguration *pConfig);
	static bool TDraw::PointInRealLine(const POINT &ptPos,const POINT &ptBegin,const POINT &ptEnd, const TConfiguration *pConfig);
	static bool TDraw::PointInRealLine(const POINT &ptPos,const DPOINT &dptBegin,const DPOINT &dptEnd, const TConfiguration *pConfig);
	static int TDraw::PointInRealLineOrExtension(const DPOINT &dptPos, DPOINT &dptIntersection, const DPOINT dptBegin, const DPOINT dptEnd,const TConfiguration *pConfig);
	static bool TDraw::PickConstraintColinear(POINT ptPos, TConstraintColinear *pColinear,const TConfiguration *pConfig);
	static bool TDraw::PickConstraintCoincide(POINT ptPos, TElement *element,const TConfiguration *pConfig);

	static TDraw::HSB RGB2HSB(int rgbR, int rgbG, int rgbB);
	static COLORREF TDraw::HSB2RGB(float h, float s, float v);

	//
	static bool TDraw::CaptureWindowToFile(HWND hWnd, TCHAR szFileName[]);
	static void TDraw::GetGifPaletteByHwnd(HWND hWnd, unsigned char *&palette, int &color_num, int &depth);
	static unsigned char TDraw::GetIndexFromPalette(const UINT32 &data, const unsigned char *palette, const int &color_num);
	static void TDraw::Create8TreePal(HWND hWnd, unsigned char *&palette, int &color_num, int &depth);

	static unsigned char TDraw::GetIndexFromPalette(const UINT32 &data, const std::vector<unsigned int> &palette, const int &color_num);
	static unsigned char TDraw::GetIndexFromPalette_Slow(const UINT32 &data, const std::vector<unsigned int> &palette, const int &color_num);
};



================================================
FILE: sample/not_pass_yet/[GB18030]TMenu.cpp
================================================
#include "TMenu.h"

void PopupMenu(HWND hParent, int menu_id) {
    //Ҽ˵
    HMENU hMenu = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(menu_id));
    hMenu = GetSubMenu(hMenu, 0);
    POINT pt;
    GetCursorPos(&pt);

    TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hParent, NULL);
}

================================================
FILE: sample/not_pass_yet/[GB18030]一个字.txt
================================================



================================================
FILE: sample/not_pass_yet/[GB18030]澤野弘之.lrc
================================================
[ti:THE ANSWER]
[ar:Ұ֮ ( Ҥ椭)]
[al:86DƥåD ꥸʥ&#12539;ɥȥå]
[by:]
[offset:0]
[00:00.00]THE ANSWER - Ұ֮ ( Ҥ椭)/Laco
[00:25.18]Lyrics byBenjamin/mpi
[00:31.11]Composed byHiroyuki Sawano
[00:36.85]We've spent our lives in shadows
[00:41.45]Good people
[00:43.26]Off the radar
[00:45.90]I see you now
[00:48.06]As the pressure builds
[00:50.06]The doubts I had looking back
[00:53.79]I didn't understand your reason
[00:56.06]You always asked me every season
[00:58.28]When all the madness is all over
[01:00.10]What is your answer
[01:03.41]Where do we go
[01:04.46]Don't need to know
[01:05.73]Just keep flow
[01:06.73]Can we go back
[01:07.94]I'll cover you
[01:08.93]You cover me
[01:10.10]Pick it up
[01:10.85]Keep your head
[01:11.80]Pick it up
[01:12.38]You talk to me
[01:13.35]I talk to you
[01:14.59]It's gon' be our Xanadu
[01:16.88]Where do we go
[01:18.04]Is it with you
[01:19.47]Your answer
[01:21.50]Yes they lied to us
[01:23.61]But I don't wanna nap in the dirt
[01:25.99]Yes they lied to us
[01:27.91]We still got a lot of work
[01:30.39]First we must beat the legion
[01:32.66]Then show the world we're human
[01:34.85]First we must beat the legion
[01:36.81]Show the world we like it rough
[01:41.98]So many dreams were shattered
[01:46.39]You saved us when it mattered
[01:50.88]We still can't see how this story ends
[01:55.08]When shall you tell me your name
[01:58.83]I didn't understand your reason
[02:01.15]You always asked me every season
[02:03.33]When all the madness is all over
[02:05.27]What is your answer
[02:08.52]Where do we go
[02:09.49]Don't need to know
[02:10.73]Just keep flow
[02:11.72]Can we go back
[02:12.96]I'll cover you
[02:13.89]You cover me
[02:15.15]Pick it up
[02:15.93]Keep your head
[02:16.86]Pick it up
[02:17.47]You talk to me
[02:18.53]I talk to you
[02:19.54]It's gon' be our Xanadu
[02:21.93]Where do we go
[02:23.08]Is it with you
[02:24.50]Your answer
[02:26.48]Yes they lied to us
[02:28.73]But I don't wanna nap in the dirt
[02:31.05]Yes they lied to us
[02:32.88]We still got a lot of work
[02:35.45]First we must beat the legion
[02:37.66]Then show the world we're human
[02:39.89]First we must beat the legion
[02:41.85]Show the world we like it rough
[02:46.91]Enough
[02:53.77]We're tough enough
[02:55.69]Enough
[03:02.65]Your answer
[03:04.59]Where do we go
[03:05.62]Don't need to know
[03:06.71]Just keep flow
[03:07.81]Can we go back
[03:09.04]I'll cover you
[03:10.06]You cover me
[03:11.26]Pick it up
[03:12.06]Keep your head
[03:12.91]Pick it up
[03:13.60]You talk to me
[03:14.59]I talk to you
[03:15.72]It's gon' be our Xanadu
[03:18.03]Where do we go
[03:19.14]Is it with you
[03:20.60]Your answer
[03:22.63]Yes they lied to us
[03:24.75]But I don't wanna nap in the dirt
[03:27.11]Yes they lied to us
[03:28.99]We still got a lot of work
[03:31.56]First we must beat the legion
[03:33.73]Then show the world we're human
[03:36.02]First we must beat the legion
[03:37.93]Show the world we like it rough

================================================
FILE: sample/not_pass_yet/[GB18030]编译说明.txt
================================================
sdjfksdjfskjdfsd
sdfjsdkfjsdkjf
dskfsjdfklsjfd


================================================
FILE: sample/not_pass_yet/[GB18030]连杆.cpp
================================================


================================================
FILE: sample/not_pass_yet/[UTF-8]CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.11)

# C++17
set(CMAKE_CXX_STANDARD 17)

project(SmartCharsetConverter)

# 添加unicode宏
add_definitions(-DUNICODE -D_UNICODE)

add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>")

if(MSVC)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MT")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT")

    set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
    set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")

    set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
endif()

# =============================================
add_subdirectory(third_party)
add_subdirectory(src)

================================================
FILE: sample/not_pass_yet/[UTF-8]TBarTool.cpp
================================================
#pragma once
#include "TBarTool.h"

#include "..\Control\TTreeViewContent.h"
#include "..\Element\TShape.h"
#include "..\Element\TBar.h"
#include "..\Element\TConstraintCoincide.h"

TBarTool::TBarTool()
{
	myElementType = ELEMENT_BAR;

	sType = TEXT("连杆");
	bCanBuildCoincide = true;
}


TBarTool::~TBarTool()
{
}

TElement * TBarTool::AddIntoShape(TRealLine &RealLine)
{
	RealLine.vecDpt.push_back(RealLine.GetRelativePointByIndex(0));
	RealLine.vecDpt.push_back(RealLine.GetRelativePointByIndex(1));

	RealLine.eType = myElementType;
	return pShape->AddElement((TBar *)&RealLine);
}

void TBarTool::AddIntoTreeViewContent(TElement *Element, int id)
{
	if (Element->eType == ELEMENT_REALLINE)
	{
		Element->eType = myElementType;
		TBar Bar;
		Bar= *(TRealLine*)Element;
		pTreeViewContent->AddItem(&Bar, pShape->iNextId);
	}
	else
		TLineTool::AddIntoTreeViewContent(Element, id);
}

//void TBarTool::AddCoincide(TConstraintCoincide *pCoincide, int id, TConfiguration *pConfig)
//{
//	AddIntoTreeViewContent(pCoincide, id);
//	pShape->AddElement(pCoincide);
//}

================================================
FILE: sample/not_pass_yet/[UTF-8]虚拟机环境.txt
================================================
换源

gcc: build-essential
cmake 3.16+

vscode: c++ go cmake ssh-remote shell


================================================
FILE: sample/tcvn/demo1-tcvn.txt
================================================
msg_id	pre_msg_id	next_msg_id	msg_info
1	0	0	Nhm Gio Ch:  <enter/>    Cho cc h! Ti h Giang Bit Hc, ngng m i danh ca cc h t lu, nghe ni gio ch  git cht c ma ng Phng Bt Bi, trn chnh li Nht Nguyt Thn Gio, a t Gio Ch  thay tri hnh o dit tr i ma u, ti h tin rng Nhm gio ch v cng ci th, nht nh s a Nht Nguyt Thn Gio danh chn giang h.<enter/>   Ti h c bit trong Thng Thin Huyn Cnh c mt Vn Kim Trng, ngc ng chu bu rt nhiu, bit c Nhm gio ch  tng vo trong , v vy thnh mi gio ch cng ti h xng vo Vn Kim Trng, nu chng ta ng tm hip lc nht nh s m c Phong n, n lc  ngc ng chu bu gio ch c ly, ti h nht nh tun theo sp xp ca gio ch. Nu c gio ch tng tr  l nim vinh hnh ca ti h. <enter/>    mong sm c din kin gio ch! <enter/><enter/>                          <color=green>Giang Bit Hc<color>
2	0	0	<color=green>cc v ng o giang h: <color><enter/>    ti h Giang Bit Hc, gn y c mt vic v cng au u, mt mnh ti h th khng th lm c, v vy thnh mi v lm cao th gip sc, nu cc v nguyn cng ti h hon thnh vic ln, Giang Bit Hc cm kch v cng.  cc v c th n Phng Tng Ph tm ti h cng bn lun k sch. a t ng o giang h!   <enter/>                       <color=green> Giang Bit Hc <color>


================================================
FILE: sample/tcvn/demo1-utf8.txt
================================================
msg_id	pre_msg_id	next_msg_id	msg_info
1	0	0	Nhậm Giáo Chủ:  <enter/>    Chào các hạ! Tại hạ Giang Biệt Hạc, ngượng mộ đại danh của các hạ từ lâu, nghe nói giáo chủ đã giết chết ác ma Đông Phương Bất Bại, trấn chỉnh lại Nhật Nguyệt Thần Giáo, đa tạ Giáo Chủ  thay trời hành đạo diệt trừ đại ma đầu, tại hạ tin rằng Nhậm giáo chủ võ công cái thế, nhất định sẽ đưa Nhật Nguyệt Thần Giáo danh chấn giang hồ.<enter/>   Tại hạ được biết trong Thông Thiên Huyễn Cảnh có một Vạn Kiếm Trũng, ngọc ngà châu báu rất nhiều, biết được Nhậm giáo chủ đã từng vào trong đó, vì vậy thỉnh mời giáo chủ cùng tại hạ xông vào Vạn Kiếm Trũng, nếu chúng ta đồng tâm hiệp lực nhất định sẽ mở được Phong ấn, đến lúc đó ngọc ngà châu báu giáo chủ cứ lấy, tại hạ nhất định tuân theo sắp xếp của giáo chủ. Nếu được giáo chủ tương trợ đó là niềm vinh hạnh của tại hạ. <enter/>    mong sớm được diện kiến giáo chủ! <enter/><enter/>                          <color=green>Giang Biệt Hạc<color>
2	0	0	<color=green>các vị đồng đạo giang hồ: <color><enter/>    tại hạ Giang Biệt Hạc, gần đây có một việc vô cùng đau đầu, một mình tại hạ thì không thể làm được, vì vậy thỉnh mời võ lâm cao thủ giúp sức, nếu các vị nguyện cùng tại hạ hoàn thành việc lớn, Giang Biệt Hạc cảm kích vô cùng.  các vị có thể đến Phượng Tường Phủ tìm tại hạ cùng bàn luận kế sách. Đa tạ đồng đạo giang hồ!   <enter/>                       <color=green> Giang Biệt Hạc <color>


================================================
FILE: sample/uchardet_test_samples/ar/iso-8859-6.txt
================================================
-1256            
       .    
.        8859-6.


================================================
FILE: sample/uchardet_test_samples/ar/utf-8.txt
================================================
ويندوز-1256 هي صفحة كود تستخدم في كتابة اللغة العربية عموماً وبعض اللغات الشبيهة
التي تستخدم نفس الأبجدية مثل الأردو والفارسية والكوردية. وذلك تحت نظام مايكروسوفت
ويندوز. صفحة الكود هذه لا تتوافق مع الأيزو 8859-6.


================================================
FILE: sample/uchardet_test_samples/ar/windows-1256.txt
================================================
-1256            
       .    
.        8859-6.


================================================
FILE: sample/uchardet_test_samples/be/iso-8859-5.txt
================================================
 (Marmota), ,   .

   15  ,    .  -- .           ,      .           ,    ,        .   ,   ,   . 


================================================
FILE: sample/uchardet_test_samples/be/utf-8.txt
================================================
Суркі (Marmota), сысуны, прадстаўнікі атраду грызуноў.

На Зямлі існуе 15 відаў суркоў, якія маюць агульнага продка. Прарадзіма суркоў — Амерыка. У той час як большасць жывёл рухалася з Еўразіі ў Амерыку, суркі з Амерыкі перабіраліся ў Азію. Розныя віды абасобіліся ў розных геаграфічных зонах і адрозніваюцца асаблівасцямі паводзін, але захавалі знешнюю падобнасць, неабходнасць упадаць у спячку і жыццё ў калоніях. Усе суркі траваядныя, жывуць у норах, маюць цёплае футра. 


================================================
FILE: sample/uchardet_test_samples/be/windows-1251.txt
================================================
 (Marmota), ,   .

   15  ,    .   .         Ţ糳  ,      .           ,    ,        .   ,   ,   . 


================================================
FILE: sample/uchardet_test_samples/bg/iso-8859-5.txt
================================================
 (Marmota)   -      (Sciuridae),  14 ,     (Spermophilus citellus).

    ,        .


================================================
FILE: sample/uchardet_test_samples/bg/utf-8.txt
================================================
Мармотите (Marmota) са бозайници - род гризачи от семейство катерицови (Sciuridae), включващ 14 вида, включващи групата на лалугерите (Spermophilus citellus).

За разлика от родствената катерица, мармотът и лалугерът водят наземен начин на живот.


================================================
FILE: sample/uchardet_test_samples/bg/windows-1251.txt
================================================
Windows-1251  8- ()  ,     ,    ,   .

Windows-1251  KOI8-R (    KOI8-U)   -  ISO 8859-5,     .        ,     .


================================================
FILE: sample/uchardet_test_samples/ca/iso-8859-1.txt
================================================
Les marmotes (Marmota) sn un gnere de mamfers de la famlia dels escirids.[1] Viuen a l'alta muntanya a l'hemisferi nord. Sn rosegadors de mida mitjana, una mica ms grans que els gats domstics, de potes curtes i cos ample que els proporcionen un aspecte fora rabassut.


================================================
FILE: sample/uchardet_test_samples/ca/utf-8.txt
================================================
Les marmotes (Marmota) són un gènere de mamífers de la família dels esciúrids.[1] Viuen a l'alta muntanya a l'hemisferi nord. Són rosegadors de mida mitjana, una mica més grans que els gats domèstics, de potes curtes i cos ample que els proporcionen un aspecte força rabassut.


================================================
FILE: sample/uchardet_test_samples/ca/windows-1252.txt
================================================
Les especials relacions econmiques es fonamenten en la llibertat de trnsit de mercaderies, treballadors i capitals, aix com en l'establiment d'una moneda nica, l'euro () per tots els estats membres (la denominada Eurozona).


================================================
FILE: sample/uchardet_test_samples/cs/ibm852.txt
================================================
Led堟ek n (Alcedo atthis) je prmrn 16,5 cm velk ptk z eledi
led堟kovitch (Alcedinidae). Je velmi vrazn zbarven s oranovou spodinou a
modrm hbetem, kdly a temenem. Vraznm znakem je tak jeho npadn dlouh
zapiatl zobk. Pro sv krsn zbarven je nazvn Ltajc drahokam.


================================================
FILE: sample/uchardet_test_samples/cs/iso-8859-2.txt
================================================
Ledek n (Alcedo atthis) je prmrn 16,5 cm velk ptk z eledi
ledkovitch (Alcedinidae). Je velmi vrazn zbarven s oranovou spodinou a
modrm hbetem, kdly a temenem. Vraznm znakem je tak jeho npadn dlouh
zapiatl zobk. Pro sv krsn zbarven je nazvn Ltajc drahokam.


================================================
FILE: sample/uchardet_test_samples/cs/mac-centraleurope.txt
================================================
Ledˇek ޒn (Alcedo atthis) je prmrn 16,5 cm velk ptk z eledi
ledˇkovitch (Alcedinidae). Je velmi vrazn zbarven s oranovou spodinou a
modrm hbetem, kޒdly a temenem. Vraznm znakem je tak jeho npadn dlouh
zapiatl zobk. Pro sv krsn zbarven je nazvn Ltajc drahokam.


================================================
FILE: sample/uchardet_test_samples/cs/utf-8.txt
================================================
Ledňáček říční (Alcedo atthis) je průměrně 16,5 cm velký pták z čeledi
ledňáčkovitých (Alcedinidae). Je velmi výrazně zbarvený s oranžovou spodinou a
modrým hřbetem, křídly a temenem. Výrazným znakem je také jeho nápadně dlouhý
zašpičatělý zobák. Pro své krásné zbarvení je nazýván Létající drahokam.


================================================
FILE: sample/uchardet_test_samples/cs/windows-1250.txt
================================================
Ledek n (Alcedo atthis) je prmrn 16,5 cm velk ptk z eledi
ledkovitch (Alcedinidae). Je velmi vrazn zbarven s oranovou spodinou a
modrm hbetem, kdly a temenem. Vraznm znakem je tak jeho npadn dlouh
zapiatl zobk. Pro sv krsn zbarven je nazvn Ltajc drahokam.


================================================
FILE: sample/uchardet_test_samples/da/ibm865.txt
================================================
Jimi Hendrix (1942-1970) var en amerikansk rockguitarist, sanger og sangskriver.

Han begyndte at spille guitar, da han var femten r, og efter at have spillet med blandt andet Little Richard dannede han Jimi Hendrix Experience i slutningen af 1966. Denne gruppe fik snart hits med sange som "Hey Joe" og "Purple Haze", og med det tredje album, Electric Ladyland fra 1968, fik gruppen sit store gennembrud. Med flere markante optrdener p tidens store festivaler, heriblandt Woodstock, opnede han legendarisk status i rockmusikken, allerede mens han var i live.

Hendrix brugte sin elektriske guitar som elektronisk lydkilde og eksperimenterede med feedback og distortion med udgangspunkt i traditionel rock'n'roll og blues. Hans misbrug af alkohol og narkotika frte imidlertid til, at han delagde sig selv, og han dde som blot 27-rig efter indtagelse af sovepiller. 


================================================
FILE: sample/uchardet_test_samples/da/iso-8859-1.txt
================================================
Dansk er et nord-germansk sprog af den stnordiske (kontinentale) gruppe, der
tales af ca. seks millioner mennesker. Det er strkt pvirket af plattysk. Dansk
tales ogs i Sydslesvig (i Flensborg ca. 20 %) samt p Frerne og Grnland [1].
Dansk er tt forbundet med norsk. Fra et sprogvidenskabeligt synspunkt kan den
fremherskende form af norsk, bokml (og i endnu hjere grad riksml), betragtes
som dansk, i hvert fald hvad skriftsproget angr. Bde dansk, norsk og svensk er
skandinaviske sprog og minder meget om hinanden.


================================================
FILE: sample/uchardet_test_samples/da/iso-8859-15.txt
================================================
Eurosymbolet eller eurotegnet () anvendes som valutasymbol for mntenheden
euro. Symbolsk kombinerer det et E eller et grsk epsilon med de to parallelle
streger, man ofte ser i valutasymboler.

Det vides ikke med sikkerhed, hvem eurosymbolet blev designet af. Nogle medier
hvder, det blev skabt af tidligere designer ved EF Arthur Eisenmenger, mens
andre pstr, det blev skabt af en lille gruppe ledet af Alain Billiet. Muligvis
er ingen af disse forklaringer korrekte, da Den Paneuropiske Union udsendte en
'1 euro'-medalje i 1972, hvorp man kan se et symbol, der i hj grad ligner det
nuvrende eurosymbol.


================================================
FILE: sample/uchardet_test_samples/da/utf-8.txt
================================================
Eurosymbolet eller eurotegnet (€) anvendes som valutasymbol for møntenheden
euro. Symbolsk kombinerer det et E eller et græsk epsilon med de to parallelle
streger, man ofte ser i valutasymboler.

Det vides ikke med sikkerhed, hvem eurosymbolet blev designet af. Nogle medier
hævder, det blev skabt af tidligere designer ved EF Arthur Eisenmenger, mens
andre påstår, det blev skabt af en lille gruppe ledet af Alain Billiet. Muligvis
er ingen af disse forklaringer korrekte, da Den Paneuropæiske Union udsendte en
'1 euro'-medalje i 1972, hvorpå man kan se et symbol, der i høj grad ligner det
nuværende eurosymbol.


================================================
FILE: sample/uchardet_test_samples/da/windows-1252.txt
================================================
Eurosymbolet eller eurotegnet () anvendes som valutasymbol for mntenheden
euro. Symbolsk kombinerer det et E eller et grsk epsilon med de to parallelle
streger, man ofte ser i valutasymboler.

Det vides ikke med sikkerhed, hvem eurosymbolet blev designet af. Nogle medier
hvder, det blev skabt af tidligere designer ved EF Arthur Eisenmenger, mens
andre pstr, det blev skabt af en lille gruppe ledet af Alain Billiet. Muligvis
er ingen af disse forklaringer korrekte, da Den Paneuropiske Union udsendte en
'1 euro'-medalje i 1972, hvorp man kan se et symbol, der i hj grad ligner det
nuvrende eurosymbol.


================================================
FILE: sample/uchardet_test_samples/de/iso-8859-1.txt
================================================
ISO 8859-1, genauer ISO/IEC 8859-1, auch bekannt als Latin-1, ist ein von der
ISO zuletzt 1998 aktualisierter Standard fr die Informationstechnik zur
Zeichenkodierung mit acht Bit und der erste Teil der Normenfamilie ISO/IEC 8859.

Die mit sieben Bit kodierbaren Zeichen entsprechen US-ASCII mit fhrendem
Nullbit. Zustzlich zu den 95 darstellbaren ASCII-Zeichen (2016-7E16) kodiert
ISO 8859-1 96 weitere (A016-FF16), also insgesamt 191 von theoretisch mglichen
256 (= 28). Den Positionen 0016-1F16 und 7F16-9F16 sind in ISO/IEC 8859 und
damit ISO/IEC 8859-1 keine Zeichen zugewiesen. Die von der IANA definierte
Bezeichnung ISO-8859-1 (mit Bindestrich) steht fr die Kombination der Zeichen
dieser Norm mit nicht darstellbaren Steuerzeichen gem ISO/IEC 6429.


================================================
FILE: sample/uchardet_test_samples/de/utf-8.txt
================================================
Berlin (Zum Anhören bitte klicken!Abspielen [bɛɐ̯ˈliːn]) ist Hauptstadt und als Land eine parlamentarische Republik und ein teilsouveräner Gliedstaat der Bundesrepublik Deutschland.[14] Die Stadt ist mit rund 3,7 Millionen Einwohnern die bevölkerungsreichste und mit 892 Quadratkilometern die flächengrößte Gemeinde Deutschlands und die einwohnerstärkste Stadt der Europäischen Union.[4] In der Agglomeration Berlin leben knapp 4,7 Millionen Einwohner, in der Metropolregion Berlin/Brandenburg gut sechs Millionen. Der Stadtstaat besteht aus zwölf Berliner Bezirken. Neben den Flüssen Spree und Havel befinden sich im Stadtgebiet kleinere Fließgewässer sowie zahlreiche Seen und Wälder.

Im Jahr 1237 erstmals urkundlich erwähnt, war die Stadt in der Geschichte Berlins Residenz- und Hauptstadt der Mark Brandenburg, des Königreichs Preußen und Deutschlands. Nach dem Ende des Zweiten Weltkriegs unterlag die Stadt 1945 dem Viermächte-Status: Ost-Berlin hatte ab 1949 die Funktion als Hauptstadt der Deutschen Demokratischen Republik, während West-Berlin sich eng an die alte Bundesrepublik Deutschland anschloss. Mit dem Fall der Berliner Mauer 1989 und der deutschen Wiedervereinigung im Jahr 1990 wuchsen die beiden Stadthälften wieder zusammen und Berlin erhielt seine Rolle als gesamtdeutsche Hauptstadt zurück. Seit 1999 ist die Stadt Sitz der Bundesregierung, des Bundespräsidenten, des Bundestages, des Bundesrates sowie der Bundesministerien und zahlreicher Botschaften. 


================================================
FILE: sample/uchardet_test_samples/de/windows-1252.txt
================================================
ISO 8859-1, genauer ISO/IEC 8859-1, auch bekannt als Latin-1, ist ein von der
ISO zuletzt 1998 aktualisierter Standard fr die Informationstechnik zur
Zeichenkodierung mit acht Bit und der erste Teil der Normenfamilie ISO/IEC 8859.

Die mit sieben Bit kodierbaren Zeichen entsprechen US-ASCII mit fhrendem
Nullbit. Zustzlich zu den 95 darstellbaren ASCII-Zeichen (20167E16) kodiert
ISO 8859-1 96 weitere (A016FF16), also insgesamt 191 von theoretisch mglichen
256 (= 28). Den Positionen 00161F16 und 7F169F16 sind in ISO/IEC 8859 und
damit ISO/IEC 8859-1 keine Zeichen zugewiesen. Die von der IANA definierte
Bezeichnung ISO-8859-1 (mit Bindestrich) steht fr die Kombination der Zeichen
dieser Norm mit nicht darstellbaren Steuerzeichen gem ISO/IEC 6429.


================================================
FILE: sample/uchardet_test_samples/el/cp737.txt
================================================
 櫘 夘 ⤦ ࡫ 磜  ⩩ 回  ⤦ Marmota,  餫     樜 .  ᭦ 回  夘    婫 ᫦  .


================================================
FILE: sample/uchardet_test_samples/el/iso-8859-7.txt
================================================
           ISO 8859-7,    ,   8-  ,    ISO 8859.                  .

    1987          ELOT 928,    1986.            2003,    ,      .


================================================
FILE: sample/uchardet_test_samples/el/utf-8.txt
================================================
Το UTF-8 (8-bit Unicode Transformation Format) είναι ένα μη-απωλεστικό σχήμα κωδικοποίησης χαρακτήρων μεταβλητού μήκους για το πρότυπο Unicode που δημιουργήθηκε από τους Ken Thompson και Rob Pike. Χρησιμοποιεί ομάδες από byte για να αναπαραστήσει τα κωδικά σημεία του Unicode. Είναι ιδιαίτερα χρήσιμο για μετάδοση δεδομένων σε 8bit συστήματα ηλεκτρονικού ταχυδρομείου.

Συγκεκριμένα χρησιμοποιεί ένα μέχρι τέσσερα byte ανά χαρακτήρα ανάλογα με το σύμβολο και το κωδικό του σημείο. Για παράδειγμα χρειάζεται μόνο ένα byte του UTF-8 για την κωδικοποίηση των 128 ASCII χαρακτήρες στο διάστημα του Unicode U+0000 μέχρι U+007F.


================================================
FILE: sample/uchardet_test_samples/el/windows-1253.txt
================================================
Windows-1253

          Windows-1253.                ( Windows-1253)    "A2".             (       ),    ,      .

 


================================================
FILE: sample/uchardet_test_samples/en/ascii.txt
================================================
This is an ASCII TEST.
We still want uchardet to detect it as ASCII, even with the presence of
an escape character: 
Or with the HZ encoding escape sequence: ~{


================================================
FILE: sample/uchardet_test_samples/en/utf-8.txt
================================================
Europe covers about 10,180,000 km² (3,930,000 sq mi), or 2% of the Earth's surface (6.8% of land area), making it the second smallest continent (using the seven-continent model). Politically, Europe is divided into about fifty sovereign states, of which Russia is the largest and most populous, spanning 39% of the continent and comprising 15% of its population. Europe had a total population of about 746 million (about 10% of the world population) in 2018.[2][3] The European climate is largely affected by warm Atlantic currents that temper winters and summers on much of the continent, even at latitudes along which the climate in Asia and North America is severe. Further from the sea, seasonal differences are more noticeable than close to the coast.


================================================
FILE: sample/uchardet_test_samples/eo/iso-8859-3.txt
================================================
Esperanto (origine Lingvo Internacia) estas la plej disvastigita internacia
planlingvo.[3] La nomo venas de la kanomo "Dr-o Esperanto", sub kiu la juda
kuracisto Ludoviko Lazaro Zamenhofo en la jaro 1887 publikigis la bazon de la
lingvo. La unua versio, la rusa, ricevis la cenzuran permeson disvastii en la
26-a de julio; i tiun daton oni konsideras la naskitago de Esperanto[4][5]. Li
intencis krei facile lerneblan netralan lingvon, tagan por uzo en la
internacia komunikado, tamen ne anstataigi aliajn, naciajn lingvojn.


================================================
FILE: sample/uchardet_test_samples/eo/utf-8.txt
================================================
Esperanto, origine la Lingvo Internacia,[4] estas la plej disvastiĝinta internacia planlingvo.[5] En 1887 Esperanton parolis nur manpleno da homoj; Esperanto havis unu el la plej malgrandaj lingvo-komunumoj de la mondo. Ĝi funkciis dekomence kiel lingvo de alternativa komunikado kaj de arta kreipovo[6]. En 2012, la lingvo fariĝis la 64-a tradukebla per Google Translate[7]; En 2016, la lingvo fariĝis tradukebla per Yandex Translate[8]; laŭ 2016, Esperanto aperis en listoj de lingvoj plej lernataj[9] kaj konataj en Hungarujo[10]. La nomo de la lingvo venas de la kaŝnomo “D-ro Esperanto„ sub kiu la juda kuracisto Ludoviko Lazaro Zamenhofo en la jaro 1887 publikigis la bazon de la lingvo. La unua versio, la rusa, ricevis la cenzuran permeson disvastiĝi en la 26-a de julio; ĉi tiun daton oni konsideras la naskiĝtago de Esperanto[11][12]. Li celis kaj sukcesis krei facile lerneblan neŭtralan lingvon, taŭgan por uzo en la internacia komunikado; la celo tamen ne estas anstataŭigi aliajn, naciajn lingvojn.


================================================
FILE: sample/uchardet_test_samples/es/iso-8859-1.txt
================================================
El precio medio de la vivienda nueva es de 2212 EUR/m2, segn datos de la Sociedad
de Tasacin a 31 de diciembre de 2012.156 El precio de la vivienda, sin embargo,
vara ostensiblemente en funcin de las comunidades autnomas y las capitales de
provincia, encontrndose la de mayor valor en Catalua (3146 EUR/m), y en
contraposicin las de Extremadura y Murcia (1271 EUR/m)


================================================
FILE: sample/uchardet_test_samples/es/iso-8859-15.txt
================================================
El precio medio de la vivienda nueva es de 2212 /m2, segn datos de la Sociedad
de Tasacin a 31 de diciembre de 2012.156 El precio de la vivienda, sin embargo,
vara ostensiblemente en funcin de las comunidades autnomas y las capitales de
provincia, encontrndose la de mayor valor en Catalua (3146 /m), y en
contraposicin las de Extremadura y Murcia (1271 /m)


================================================
FILE: sample/uchardet_test_samples/es/utf-8.txt
================================================
El precio medio de la vivienda nueva es de 2212 €/m2, según datos de la Sociedad
de Tasación a 31 de diciembre de 2012.156 El precio de la vivienda, sin embargo,
varía ostensiblemente en función de las comunidades autónomas y las capitales de
provincia, encontrándose la de mayor valor en Cataluña (3146 €/m²), y en
contraposición las de Extremadura y Murcia (1271 €/m²)


================================================
FILE: sample/uchardet_test_samples/es/windows-1252.txt
================================================
El precio medio de la vivienda nueva es de 2212 /m2, segn datos de la Sociedad
de Tasacin a 31 de diciembre de 2012.156 El precio de la vivienda, sin embargo,
vara ostensiblemente en funcin de las comunidades autnomas y las capitales de
provincia, encontrndose la de mayor valor en Catalua (3146 /m), y en
contraposicin las de Extremadura y Murcia (1271 /m)


================================================
FILE: sample/uchardet_test_samples/et/iso-8859-13.txt
================================================
Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.

Tehhov on eelkige tuntud oma novellide poolest. Tema jutustuste tavaliseks
tegevuspaigaks olid vene vikeasulad ja need ksitlesid hingeksildust, raisatud
nne jms. Tuntud on ka tema pshholoogilised nidendid, kus valitseb kurb ja
lootusetu meeleolu.


================================================
FILE: sample/uchardet_test_samples/et/iso-8859-15.txt
================================================
Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.

Tehhov on eelkige tuntud oma novellide poolest. Tema jutustuste tavaliseks
tegevuspaigaks olid vene vikeasulad ja need ksitlesid hingeksildust, raisatud
nne jms. Tuntud on ka tema pshholoogilised nidendid, kus valitseb kurb ja
lootusetu meeleolu.


================================================
FILE: sample/uchardet_test_samples/et/iso-8859-4.txt
================================================
Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.

Tehhov on eelkige tuntud oma novellide poolest. Tema jutustuste tavaliseks
tegevuspaigaks olid vene vikeasulad ja need ksitlesid hingeksildust, raisatud
nne jms. Tuntud on ka tema pshholoogilised nidendid, kus valitseb kurb ja
lootusetu meeleolu.


================================================
FILE: sample/uchardet_test_samples/et/utf-8.txt
================================================
Anton Pavlovitš Tšehhov oli vene näite- ja novellikirjanik ning praktiseeriv arst.

Tšehhov on eelkõige tuntud oma novellide poolest. Tema jutustuste tavaliseks
tegevuspaigaks olid vene väikeasulad ja need käsitlesid hingeüksildust, raisatud
õnne jms. Tuntud on ka tema psühholoogilised näidendid, kus valitseb kurb ja
lootusetu meeleolu.


================================================
FILE: sample/uchardet_test_samples/et/windows-1252.txt
================================================
Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.

Tehhov on eelkige tuntud oma novellide poolest. Tema jutustuste tavaliseks
tegevuspaigaks olid vene vikeasulad ja need ksitlesid hingeksildust, raisatud
nne jms. Tuntud on ka tema pshholoogilised nidendid, kus valitseb kurb ja
lootusetu meeleolu.


================================================
FILE: sample/uchardet_test_samples/et/windows-1257.txt
================================================
Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.

Tehhov on eelkige tuntud oma novellide poolest. Tema jutustuste tavaliseks
tegevuspaigaks olid vene vikeasulad ja need ksitlesid hingeksildust, raisatud
nne jms. Tuntud on ka tema pshholoogilised nidendid, kus valitseb kurb ja
lootusetu meeleolu.


================================================
FILE: sample/uchardet_test_samples/fi/iso-8859-1.txt
================================================
Termi science fiction on amerikkalaisen tieteislehtien toimittajan Hugo
Gernsbackin keksim. Suomessa termin tieteiskirjallisuus loi tohtori Eino
Kauppinen 1950-luvun alkupuolella.
Tieteiskirjallisuudelle on laadittu erilaisia mritelmi. Tieteiskirjallisuuden
rajat eivt ole yksiselitteisen selket. Tieteiskirjallisuus lhenee monia
kirjallisuudenlajeja, erityisesti kauhu- ja fantasiakirjallisuutta. Nill
kolmella lajilla onkin yhteiset juuret 1800-lukua edeltvss ei-realistisessa
kirjallisuudessa.


================================================
FILE: sample/uchardet_test_samples/fi/utf-8.txt
================================================
Termi science fiction on amerikkalaisen tieteislehtien toimittajan Hugo
Gernsbackin keksimä. Suomessa termin tieteiskirjallisuus loi tohtori Eino
Kauppinen 1950-luvun alkupuolella.
Tieteiskirjallisuudelle on laadittu erilaisia määritelmiä. Tieteiskirjallisuuden
rajat eivät ole yksiselitteisen selkeät. Tieteiskirjallisuus lähenee monia
kirjallisuudenlajeja, erityisesti kauhu- ja fantasiakirjallisuutta. Näillä
kolmella lajilla onkin yhteiset juuret 1800-lukua edeltävässä ei-realistisessa
kirjallisuudessa.


================================================
FILE: sample/uchardet_test_samples/fr/iso-8859-1.txt
================================================
La norme ISO 8859-1, dont le nom complet est ISO/CEI 8859-1, et qui est souvent appele Latin-1 ou Europe occidentale, forme la premire partie de la norme internationale ISO/CEI 8859, qui est une norme de l'Organisation internationale de normalisation pour le codage des caractres en informatique.

Elle dfinit ce qu'elle appelle l'alphabet latin numro 1, qui consiste en 191 caractres de l'alphabet latin, chacun d'entre eux tant cod par un octet (soit 8 bits). ISO 8859-1 reprend le codage des caractres imprimables d'US-ASCII.

Dans les pays occidentaux, cette norme tait utilise par de nombreux systmes d'exploitation, dont UNIX, Windows ou AmigaOS. Elle a donn lieu  quelques extensions et adaptations, dont Windows-1252 et ISO 8859-15. La distinction entre ASCII, ISO 8859-1, ISO 8859-15, Windows-1252 et MacRoman est une source de confusion parmi les dveloppeurs de programmes informatiques. Le Multinational Character Set cr par Digital Equipment Corporation pour le terminal informatique VT220 est considr comme  la fois l'anctre de l'ISO 8859-1 et de l'Unicode2. Aujourd'hui, son utilisation tend  dcrotre au profit de l'Unicode.


================================================
FILE: sample/uchardet_test_samples/fr/iso-8859-15.txt
================================================
L'uf de volaille est un produit agricole servant d'ingrdient entrant dans la
composition de nombreux plats, dans de nombreuses cultures gastronomiques du
monde.

Le plus utilis est l'uf de poule, mais les ufs d'autres oiseaux sont aussi
consomms : caille, cane, oie, autruche, etc. Les ufs de poissons, comme le
caviar, ou de certains reptiles, comme ceux de l'iguane vert, sont galement
utiliss dans l'alimentation humaine. Cependant, leur utilisation est trs
diffrente de celle des ufs de volaille.

Les ufs utiliss en cuisine ne sont gnralement pas fconds du fait de leur
provenance d'levages industriels o les coqs sont absents. Fconds ou non, ils
sont utiliss  l'tat frais si moins de vingt-huit jours se sont couls aprs
la ponte, selon les normes administratives franaises. Dans les usages
culinaires asiatiques, les ufs sont parfois consomms couvs, comme le balut,
ou mis  fermenter pendant plusieurs semaines, comme l'uf de cent ans.


================================================
FILE: sample/uchardet_test_samples/fr/utf-8.txt
================================================
UTF-8 (abréviation de l’anglais Universal Character Set Transformation Format -
8 bits) est un codage de caractères informatiques conçu pour coder l’ensemble
des caractères du « répertoire universel de caractères codés », initialement
développé par l’ISO dans la norme internationale ISO/CEI 10646, aujourd’hui
totalement compatible avec le standard Unicode, en restant compatible avec la
norme ASCII limitée à l’anglais de base (et quelques autres langues beaucoup
moins fréquentes), mais très largement répandue depuis des décennies.

L’UTF-8 est utilisé par 82,2 % des sites web en décembre 20141. De par sa
nature, UTF-8 est d’un usage de plus en plus courant sur Internet, et dans les
systèmes devant échanger de l'information. Il s’agit également du codage le plus
utilisé dans les systèmes GNU, Linux et compatibles pour gérer le plus
simplement possible des textes et leurs traductions dans tous les systèmes
d’écritures et tous les alphabets du monde.


================================================
FILE: sample/uchardet_test_samples/fr/windows-1252.txt
================================================
Luf de volaille est un produit agricole servant d'ingrdient entrant dans la
composition de nombreux plats, dans de nombreuses cultures gastronomiques du
monde.


================================================
FILE: sample/uchardet_test_samples/ga/iso-8859-1.txt
================================================
Ag seo tarma seoltireachta a bhaineann le longa adhmaid agus le bid.

N bhodh de cheangal idir ire agus tortha eile ach na longa, agus t ire
fin ln de lochanna agus d'aibhneacha. Fgann seo go bhfuil an teanga breac le
tarmaocht seoltireachta agus loingseoireachta agus cuid di tugtha isteach n
Lochlainnis agus n mBarla tr lonnaitheoir n iasacht.


================================================
FILE: sample/uchardet_test_samples/ga/utf-8.txt
================================================
Ag seo téarmaí seoltóireachta a bhaineann le longa adhmaid agus le báid.

Ní bhíodh de cheangal idir Éire agus tíortha eile ach na longa, agus tá Éire
féin lán de lochanna agus d’aibhneacha. Fágann seo go bhfuil an teanga breac le
téarmaíocht seoltóireachta agus loingseoireachta agus cuid di tugtha isteach ón
Lochlainnis agus ón mBéarla trí lonnaitheoirí ón iasacht.


================================================
FILE: sample/uchardet_test_samples/ga/windows-1252.txt
================================================
Ag seo tarma seoltireachta a bhaineann le longa adhmaid agus le bid.

N bhodh de cheangal idir ire agus tortha eile ach na longa, agus t ire
fin ln de lochanna agus daibhneacha. Fgann seo go bhfuil an teanga breac le
tarmaocht seoltireachta agus loingseoireachta agus cuid di tugtha isteach n
Lochlainnis agus n mBarla tr lonnaitheoir n iasacht.


================================================
FILE: sample/uchardet_test_samples/he/ibm862.logical.txt
================================================
     (: Two Treatises of Government)   -    ' ,    -1689.[1]     ().            "".             ,                    .          ,      .


================================================
FILE: sample/uchardet_test_samples/he/ibm862.visual.txt
================================================
.      ,          .                    ,             .""            .)(     ]1[.9861-    , \'    -   )tnemnrevoG fo sesitaerT owT :(     


================================================
FILE: sample/uchardet_test_samples/he/iso-8859-8.txt
================================================
  ISO 8859 ,   , :
 0xA0  0xBF   ,  ,   .


================================================
FILE: sample/uchardet_test_samples/he/utf-8.txt
================================================
(ראשי תיבות של 8‎-bit Unicode Transformation Format או 8‎-bit UCS Transformation Format) הוא קידוד תווים באורך משתנה ליוניקוד, שנוצר על ידי רוב פייק וקן תומפסון. ניתן לקודד בו כל תו המצוי בתקן יוניקוד על ידי שימוש באחד עד ארבעה בתים, תלוי בתו. הקידוד ב-UTF-8 מעניק את כל יתרונות השימוש בקידוד ליוניקוד ומוסיף עליהם, בין היתר, גם חיסכון בזיכרון, עמידות בפני איבוד או השחתת בתים ותאימות לאחור ל-ASCII. ה-IETF מעדיף בבירור את UTF-8 ומחייב כל פרוטוקול אינטרנט לתמוך בו, וכן קונסורציום הדואר האלקטרוני, ה-IMC, ממליץ שכל תוכנת דואר אלקטרוני תוכל להציג וליצור דואר באמצעות UTF-8.




================================================
FILE: sample/uchardet_test_samples/he/windows-1255.txt
================================================
   ,   -,      ,           .


================================================
FILE: sample/uchardet_test_samples/hi/utf-8.txt
================================================
ग्लेशियर नेशनल पार्क (अंग्रेज़ी: Glacier National Park; उच्चा.: ग्लेशियर नेशनल पार्क) अमेरिकी राष्ट्रीय उद्यान है, जो कि कनाडा-संयुक्त राज्य अमेरिका की सीमा पर स्थित है। उद्यान संयुक्त राज्य के उत्तर-पश्चिमी मोंटाना राज्य में स्थित है और कनाडा की ओर अल्बर्टा और ब्रिटिश कोलम्बिया प्रांतों से सटा हुआ है। उद्यान दस लाख एकड़ (4,000 किमी2) से अधिक क्षेत्र में फैला हुआ है और इसमें दो पर्वत श्रृंखला (रॉकी पर्वत की उप-श्रेणियाँ), 130 से अधिक नामित झीलें, 1,000 से अधिक विभिन्न पौधों की प्रजातियां और सैकड़ों वन्यजीवों की प्रजातियां शामिल हैं। इस विशाल प्राचीन पारिस्थितिकी तंत्र को जो कि 16,000 वर्ग मील (41,000 किमी2) में शामिल संरक्षित भूमि का भाग है, "क्राउन ऑफ़ द कॉन्टिनेंट इकोसिस्टम" के रूप में संदर्भित किया गया है।[1]

ग्लेशियर नेशनल पार्क में लगभग सभी मूल स्थानीय पादप और जीव-जन्तु प्रजातियां हैं। बड़े स्तनधारी जैसे कि भूरा भालू, मूस, और पहाड़ी बकरियों के साथ-साथ दुर्लभ या लुप्तप्राय प्रजातियां जैसे कि वूल्वरिन और कनाडाई लिनेक्स, उद्यान में निवास करते हैं। यहां से पक्षियों की सैकड़ों प्रजातियां, एक दर्जन से अधिक मछलियों की प्रजातियां और कुछ सरीसृप और उभयचर प्रजातियों को प्रलेखित किया गया है। उद्यान में प्रेरी से टुंड्रा तक कई पारिस्थितिकी तंत्र हैं। उद्यान के दक्षिण-पश्चिम हिस्से में पश्चिमी रेडेकार्डर और हेमलॉक के जंगल पाये जाते हैं। उद्यान के जंगलों में आग लगना आम है। 1964 को छोड़कर उद्यान में हर साल आग लगती है। 1936 में 64 बार आग लगी थी जो कि रिकॉर्ड में सबसे अधिक है।[2][3] 2003 में लगी छह आग ने लगभग 136,000 एकड़ (550 किमी2), उद्यान के 13% से अधिक हिस्से को जला डाला था।[4] 


================================================
FILE: sample/uchardet_test_samples/hr/ibm852.txt
================================================
Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice
Rosaceae.
Prirodno je rasprostranjena u zapadnoj, srednjoj i junoj Europi, sjevernoj
Africi, Krimu, Maloj Aziji, Kavkazu i Transkavkaziji.


================================================
FILE: sample/uchardet_test_samples/hr/iso-8859-13.txt
================================================
Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice
Rosaceae.
Prirodno je rasprostranjena u zapadnoj, srednjoj i junoj Europi, sjevernoj
Africi, Krimu, Maloj Aziji, Kavkazu i Transkavkaziji.


================================================
FILE: sample/uchardet_test_samples/hr/iso-8859-16.txt
================================================
Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice
Rosaceae.
Prirodno je rasprostranjena u zapadnoj, srednjoj i junoj Europi, sjevernoj
Africi, Krimu, Maloj Aziji, Kavkazu i Transkavkaziji.


================================================
FILE: sample/uchardet_test_samples/hr/iso-8859-2.txt
================================================
Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice
Rosaceae.
Prirodno je rasprostranjena u zapadnoj, srednjoj i junoj Europi, sjevernoj
Africi, Krimu, Maloj Aziji, Kavkazu i Transkavkaziji.


================================================
FILE: sample/uchardet_test_samples/hr/mac-centraleurope.txt
================================================
Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice
Rosaceae.
Prirodno je rasprostranjena u zapadnoj, srednjoj i junoj Europi, sjevernoj
Africi, Krimu, Maloj Aziji, Kavkazu i Transkavkaziji.


================================================
FILE: sample/uchardet_test_samples/hr/utf-8.txt
================================================
Brekinja (lat. Sorbus torminalis) je bjelogorična vrsta drveća iz porodice
Rosaceae.
Prirodno je rasprostranjena u zapadnoj, srednjoj i južnoj Europi, sjevernoj
Africi, Krimu, Maloj Aziji, Kavkazu i Transkavkaziji.


================================================
FILE: sample/uchardet_test_samples/hr/windows-1250.txt
================================================
Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice
Rosaceae.
Prirodno je rasprostranjena u zapadnoj, srednjoj i junoj Europi, sjevernoj
Africi, Krimu, Maloj Aziji, Kavkazu i Transkavkaziji.


================================================
FILE: sample/uchardet_test_samples/hu/iso-8859-2.txt
================================================
Az ISO 8859-2 (hivatalosan ISO/IEC 8859-2, rviden s nem hivatalosan Latin-2) az ISO/IEC 8859-es karakterkdolsi szabvny msodik rsze. Az ISO ltal kettes szm latin bcnek nevezett 191 karakter mindegyiknek egybjtos (nyolcbites) kdjt adja meg. A 191 karakter kztt minden magyar kezetes bet megtallhat (a sok ms kszletbl hinyz  s  is).

Az ISO_8859-2:1987 (mime rvidtsbl ismertebb nevn ISO-8859-2 (az "ISO" utn ktjellel)) az IANA-nak erre a szabvnyra pl karakterkszletnek neve, melyben a C0 (0x00-0x1F) s a C1 (0x80-0x9F) rsz az ISO/IEC 6429-ben meghatrozott vezrlkdokat tartalmazza. Az ISO/IEC 6429-ben s 2022-ben megadott escape szekvencikat nem hasznlja. Tovbbi ismert nevei: ISO_8859-2, latin2, l2 s csISOLatin2.


================================================
FILE: sample/uchardet_test_samples/hu/utf-8.txt
================================================
Giacomo Puccini (Lucca, 1858. december 22. – Brüsszel, 1924. november 29.) a 20. század egyik legnépszerűbb olasz operaszerzője. Műveiben főként az emberi érzésekre összpontosított: kis örömök, mindennapi kis események, nagy szenvedélyek és érzelmek jelennek meg, többnyire egzotikus környezetben. Hősei hétköznapi emberek. A Bohémélet tüdőbajos Mimije, az elhagyott Pillangókisasszony, az öngyilkos Tosca mind a szerelem áldozatai, akik végül az életükkel fizetnek.

Puccini operái többnyire tragikus befejezésű darabok. A Nyugat lánya és a Gianni Schicchi című vígopera cselekménye azonban boldog véget ér; tragikus fordulata után az utolsó mű, a Turandot is.


================================================
FILE: sample/uchardet_test_samples/hu/windows-1250.txt
================================================
Jellemz r az els sztagra es hangsly (ebben a finnugor nyelvek s a szlovk nyelv hasonltanak hozz), a magnhangz-harmnia (barnulsotokrl  zldlsetekrl), valamint a magnhangz-hosszsg s a hangsly egymstl fggetlen volta (amely szinte egyedliknt lehetv teszi az antik Idmrtkes versels alkalmazst). Hangrendszerre ezenkvl a lgy mssalhangzk (ny, ty, gy), az aspirlatlan zrhangok (h nlkl ejtett p, t, k, szemben pldul a germn nyelvekkel) s a palatlis magnhangzk eltti kemny mssalhangzk jelenlte jellemz (azaz lehetsges ne, ti stb. hangkapcsolat, nye, tyi helyett; szemben pldul az orosszal). Nincsenek benne valdi diftongusok (mint pldul a finnben vagy nmetben) s reduklt, vagyis elnyelt magnhangzk (mint pldul az angolban, nmetben). A specilis magyar a hang (mely a svdben s a perzsban is megvan) nehzsget okozhat a nyelvnket tanulknak.


================================================
FILE: sample/uchardet_test_samples/it/iso-8859-1.txt
================================================
L'architettura longobarda  costituita dall'insieme delle opere architettoniche
realizzate in Italia durante il regno dei Longobardi (568-774), con residuale
permanenza nell'Italia meridionale fino al X-XI secolo (Langobardia Minor), e
commissionate dai re e dai duchi longobardi.
L'attivit architettonica sviluppata in Langobardia Maior  andata in gran parte
perduta, per lo pi a causa di successive ricostruzioni degli edifici sacri e
profani eretti tra VII e VIII secolo. A parte il Tempietto longobardo di
Cividale del Friuli, rimasto in gran parte intatto, gli edifici civili e
religiosi di Pavia, Monza o altre localit sono stati ampiamente rimaneggiati
nei secoli seguenti. Ancora integre rimangono cos soltanto poche architetture,
o perch inglobate negli ampliamenti successivi - come la chiesa di San
Salvatore a Brescia) -, o perch periferiche e di modeste dimensioni - come la
chiesa di Santa Maria foris portas a Castelseprio. Testimonianze maggiormente
fedeli alla forma originale si ritrovano, invece, nella Langobardia Minor: a
Benevento si conservano la chiesa di Santa Sofia, un ampio tratto delle Mura e
la Rocca dei Rettori, unici esempi superstiti di architettura militare
longobarda, mentre altre testimonianze si sono conservate in centri minori del
ducato beneventano e a Spoleto.


================================================
FILE: sample/uchardet_test_samples/it/utf-8.txt
================================================
L'architettura longobarda è costituita dall'insieme delle opere architettoniche
realizzate in Italia durante il regno dei Longobardi (568-774), con residuale
permanenza nell'Italia meridionale fino al X-XI secolo (Langobardia Minor), e
commissionate dai re e dai duchi longobardi.
L'attività architettonica sviluppata in Langobardia Maior è andata in gran parte
perduta, per lo più a causa di successive ricostruzioni degli edifici sacri e
profani eretti tra VII e VIII secolo. A parte il Tempietto longobardo di
Cividale del Friuli, rimasto in gran parte intatto, gli edifici civili e
religiosi di Pavia, Monza o altre località sono stati ampiamente rimaneggiati
nei secoli seguenti. Ancora integre rimangono così soltanto poche architetture,
o perché inglobate negli ampliamenti successivi - come la chiesa di San
Salvatore a Brescia) -, o perché periferiche e di modeste dimensioni - come la
chiesa di Santa Maria foris portas a Castelseprio. Testimonianze maggiormente
fedeli alla forma originale si ritrovano, invece, nella Langobardia Minor: a
Benevento si conservano la chiesa di Santa Sofia, un ampio tratto delle Mura e
la Rocca dei Rettori, unici esempi superstiti di architettura militare
longobarda, mentre altre testimonianze si sono conservate in centri minori del
ducato beneventano e a Spoleto.


================================================
FILE: sample/uchardet_test_samples/ja/euc-jp.txt
================================================
Extended Unix Code(EUC)ϡUNIXǤ褯Ȥʸɤ沽Ǥ롣

    ܸEUC
        JIS X 0208١ (EUC-JP)
        JIS X 0213١ (EUC-JIS-2004)
    ڹEUC (EUC-KR)
    λEUC (EUC-CN)
    λEUC (EUC-TW)

ʤɤ롣


================================================
FILE: sample/uchardet_test_samples/ja/iso-2022-jp.txt
================================================
ISO/IEC 2022$B!J5l>N(B ISO 2022$B!K$O!"(B

    $BJ8;z=89g$r(B7$B%S%C%HId9f$^$?$O(B8$B%S%C%HId9f$GI=8=$9$k$?$a$N5;=Q!"$*$h$S(B
    $BJ#?t$NJ8;z=89g$rC10l$NJ8;zId9f2=J}<0$K4^$a$k5;=Q(B

$B$r5,Dj$9$k(BISO$B5,3J$G$"$k!#(BJIS$B$NBP1~5,3J$O(BJIS X 0202 $B!V>pJs5;=Q(B-$BJ8;zId9f$N9=B$5Z$S3HD%K!!W(B[1]$B!#(BEcma International$B$NBP1~5,3J$O(BECMA-35$B!#(B

ISO/IEC 2022 $B$NId9f2=J}<0$O!"0lHL$K!"(B1$BJ8;z$K(B1$B%P%$%H$+(B2$B%P%$%H0J>e$r;H$&2DJQD9$NJ8;zId9f2=J}<0$G$"$k!#$$$/$D$+$NId9f2=I=8=$,(BISO/IEC 2022$B$N5!9=$r;H$C$F$$$k!#$?$H$($P!"(BISO-2022-JP$B$OF|K\8l$G9-$/;H$o$l$F$$$kId9f2=I=8=$G$"$j!"$$$o$f$k!V(BJIS$B%3!<%I!W$H$$$&$N$b$3$l$r;X$9$3$H$,0lHLE*$G$"$k!#(B


================================================
FILE: sample/uchardet_test_samples/ja/shift_jis.txt
================================================
{{{{{{{{{{{{{{{{{{{


================================================
FILE: sample/uchardet_test_samples/ja/utf-8.txt
================================================
UTF-8(ユーティーエフはち、ユーティーエフエイト)はISO/IEC 10646 (UCS) とUnicodeで使える8ビット符号単位の文字符号化形式及び文字符号化スキーム。

正式名称は、ISO/IEC 10646では “UCS Transformation Format 8”、Unicodeでは “Unicode Transformation Format-8” という。両者はISO/IEC 10646とUnicodeのコード重複範囲で互換性がある。RFCにも仕様がある[1]。

2バイト目以降に「/」などのASCII文字が現れないように工夫されていることから、UTF-FSS (File System Safe) ともいわれる。旧名称はUTF-2。

データ交換方式、ファイル形式として、一般的にUTF-8は使われる傾向にある。

当初は、ベル研究所においてPlan 9で用いるエンコードとして、ロブ・パイクによる設計指針のもと、ケン・トンプソンによって考案された


================================================
FILE: sample/uchardet_test_samples/ka/georgian-academy.txt
================================================
 (. Marmota)     .   15  .    .     .         ,  ,    .


================================================
FILE: sample/uchardet_test_samples/ka/georgian-ps.txt
================================================
 (. Marmota)     .   15  .    .     .         ,  ,    .


================================================
FILE: sample/uchardet_test_samples/ka/utf-8.txt
================================================
ვირზაზუნა (ლათ. Marmota) — ძუძუმწოვრების გვარი მღრღნელების რიგისა. მსოფლიოში ვირზაზუნათა 15 სახეობაა ცნობილი. მათ სამშობლოდ ამერიკა ითვლება. ვირზაზუნები ძალიან განსხვავდებიან სხვა ძუძუმწოვრებისაგან. იმ დროს როდესაც ცხოველები აზიიდან და ევროპიდან ამერიკისაკენ მიემართებოდნენ, ვირზაზუნები პირიქით, ამერიკიდან გავრცელდნენ მთელ მსოფლიოში.


================================================
FILE: sample/uchardet_test_samples/ko/iso-2022-kr.txt
================================================
$)CISO/IEC 20224B

    9.@Z A}GU@; 7:qF. :NH# 6G4B 8:qF. :NH#7N G%GvGO1b @'GQ 1b<z
    5Q @L;s@G 9.@Z A}GU@; GO3*@G 9.@Z :NH#H- 9f=D@87N 8p5N G%GvGO4B 1b<z

@; 1TA$GO4B ISO G%AX@L4Y.

ISO/IEC 2022@G :NH#H- 9f=D@: Ek;s 9.@Z GO3*?! 19Y@LF.3* 29Y@LF. @L;s@; >24B 0!:/ 9.@Z :NH#H- 9f=D@L8g GQ19>n@G 0f?l EUC-KR@L @L :NH#H- 9f=D@; ;g?kGQ4Y.


================================================
FILE: sample/uchardet_test_samples/ko/johab.txt
================================================
eie ѩ }  ii  ee qa[1] ei x‘Ae } 14 ѩ 10  24i aa qea. "aui  ia" Ai a A׷ ee  aa ia aa 1443e wAaa 1446e e͡ava. {iaa {e aaa qaa { , , i  A eA aa A q颅a b xea. qAe } 17A ѩ 11  28aa A 4i  Ae 24e ea. e 壥  幢 aáAe w a, Aa ɥ Ae aa᷁  a Ȃava. 壥Ae i(Xhi)a ea.


================================================
FILE: sample/uchardet_test_samples/ko/uhc.smi
================================================
<SAMI>
<HEAD>
<TITLE>EUC-KR.smi</TITLE>
<STYLE TYPE="text/css">
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0000><P>EUC-KR
<SYNC Start=1000><P>EUC-KR KS X 1001 KS X 1003 ϴ 8Ʈ  ڵ, EUC ̸ ǥ ѱ ϼ ڵ̱   ϼ̶ Ҹ.
<SYNC Start=2000><P>EUC-KR ڵ   ȴ.
<SYNC Start=3000><P>128  Ʈ KS X 1003 Ѵ.
<SYNC Start=4000><P>128 ũų  Ʈ KS X 1001 Ѵ.  ڴ   128  ڵ尪 Ͽ 2Ʈ ǥȴ.
<SYNC Start=5000><P> KS X 1001 40-27  "" ڴ EUC-KR C0 A7 Ʈ  ǥȴ.
<SYNC Start=6000><P>KS X 1001 ѱ ä ڸ Ͽ ԰  տ Ե  ѱ ǥϴ Ȯ  , κ    EUC-KR  ʰ  CP949  ٸ  Ͽ KS X 1001 ٱ  ѱ ǥѴ.
</BODY>
</SAMI>


================================================
FILE: sample/uchardet_test_samples/ko/utf-8.txt
================================================
UTF-8은 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나로, 켄 톰프슨과 롭 파이크가 만들었다. 본래는 FSS-UTF(File System Safe UCS/Unicode Transformation Format)라는 이름으로 제안되었다.

UTF-8 인코딩은 유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트까지를 사용한다. 예를 들어서, U+0000부터 U+007F 범위에 있는 ASCII 문자들은 UTF-8에서 1바이트만으로 표시된다. 4바이트로 표현되는 문자는 모두 기본 다국어 평면(BMP) 바깥의 유니코드 문자이며, 거의 사용되지 않는다. UTF-16과 UTF-8 중 어느 인코딩이 더 적은 바이트를 사용하는지는 문자열에서 사용된 코드 포인트에 따라 달라지며, 실제로 DEFLATE와 같은 일반적인 압축 알고리즘을 사용할 경우 이 차이는 무시할 수 있을 정도이다. 이러한 압축 알고리즘을 사용하기 힘들고 크기가 중요할 경우 유니코드 표준 압축 방식을 대신 사용할 수 있다.


================================================
FILE: sample/uchardet_test_samples/lt/iso-8859-10.txt
================================================
Vincentas van Gogas (ol. Vincent van Gogh, 1853 m. kovo 30 d. Grot Zunderte,
Nyderlandai - 1890 m. liepos 29 d. Overe prie Uazos, Pranczija) - oland
tapytojas ir grafikas, postimpresionistas.


================================================
FILE: sample/uchardet_test_samples/lt/iso-8859-13.txt
================================================
Vincentas van Gogas (ol. Vincent van Gogh, 1853 m. kovo 30 d. Grot Zunderte,
Nyderlandai - 1890 m. liepos 29 d. Overe prie Uazos, Pranczija) - oland
tapytojas ir grafikas, postimpresionistas.


================================================
FILE: sample/uchardet_test_samples/lt/iso-8859-4.txt
================================================
Vincentas van Gogas (ol. Vincent van Gogh, 1853 m. kovo 30 d. Grot Zunderte,
Nyderlandai - 1890 m. liepos 29 d. Overe prie Uazos, Pranczija) - oland
tapytojas ir grafikas, postimpresionistas.


================================================
FILE: sample/uchardet_test_samples/lt/utf-8.txt
================================================
Vincentas van Gogas (ol. Vincent van Gogh, 1853 m. kovo 30 d. Grot Zunderte,
Nyderlandai – 1890 m. liepos 29 d. Overe prie Uazos, Prancūzija) – olandų
tapytojas ir grafikas, postimpresionistas.


================================================
FILE: sample/uchardet_test_samples/lv/iso-8859-10.txt
================================================
Vinsents Villems van Gogs (nderlandieu: Vincent Willem van Gogh, dzimis 1853.
gada 30. mart, miris 1890. gada 29. jlij) bija nderlandieu gleznotjs,
postimpresionisma prstvis. Kopum van Gogs radja vairk nek 2000 darbu, to
skait 900 gleznu un 1100 zmjumu un skiu. Savus slavenkos darbus vi radja
pdjo divu dzves gadu laik. Tiek uzskatts, ka van Gogs btiski ir ietekmjis
20. gadsimta mkslu, tostarp ekspresionismu un fovismu.


================================================
FILE: sample/uchardet_test_samples/lv/iso-8859-13.txt
================================================
Vinsents Villems van Gogs (nderlandieu: Vincent Willem van Gogh, dzimis 1853.
gada 30. mart, miris 1890. gada 29. jlij) bija nderlandieu gleznotjs,
postimpresionisma prstvis. Kopum van Gogs radja vairk nek 2000 darbu, to
skait 900 gleznu un 1100 zmjumu un skiu. Savus slavenkos darbus vi radja
pdjo divu dzves gadu laik. Tiek uzskatts, ka van Gogs btiski ir ietekmjis
20. gadsimta mkslu, tostarp ekspresionismu un fovismu.


================================================
FILE: sample/uchardet_test_samples/lv/iso-8859-4.txt
================================================
Vinsents Villems van Gogs (nderlandieu: Vincent Willem van Gogh, dzimis 1853.
gada 30. mart, miris 1890. gada 29. jlij) bija nderlandieu gleznotjs,
postimpresionisma prstvis. Kopum van Gogs radja vairk nek 2000 darbu, to
skait 900 gleznu un 1100 zmjumu un skiu. Savus slavenkos darbus vi radja
pdjo divu dzves gadu laik. Tiek uzskatts, ka van Gogs btiski ir ietekmjis
20. gadsimta mkslu, tostarp ekspresionismu un fovismu.


================================================
FILE: sample/uchardet_test_samples/lv/utf-8.txt
================================================
Vinsents Villems van Gogs (nīderlandiešu: Vincent Willem van Gogh, dzimis 1853.
gada 30. martā, miris 1890. gada 29. jūlijā) bija nīderlandiešu gleznotājs,
postimpresionisma pārstāvis. Kopumā van Gogs radīja vairāk nekā 2000 darbu, to
skaitā 900 gleznu un 1100 zīmējumu un skiču. Savus slavenākos darbus viņš radīja
pēdējo divu dzīves gadu laikā. Tiek uzskatīts, ka van Gogs būtiski ir ietekmējis
20. gadsimta mākslu, tostarp ekspresionismu un fovismu.


================================================
FILE: sample/uchardet_test_samples/mk/ibm855.txt
================================================
Ԡ з Ʒ   ֎ Ԡ 렒 Ԡ Ҩ堢з  ԷƠ ШԠ ب Ơ ֦ᨦԷ Է  Ҩ Ԡ Ҡ.  Ԡ ؠ ֬Ш ֎ ԨԷ Է  Ҡ ֎ . ՠ  Ơ ҨƠ  Ҡ   ԷԠ ШԠ ب  禠 Ш  Ԩ  Ҩ堠  Ʒ Ԡ. 먖 Ԡ ֨Ơ  Է Рᠠ Ԡ  Է (. Ơ) з Է Ҡ   ( Ҡ Ʒ). 淨    禠 먖ؠ  Ҩ Ԡ Ҡ. ѠԷ Է ᠠ  Էᠠ  Ơ  ԠԠ ب   ֦ Ơ Ԡ 렒. Ԡ Ԡ Ԡ  Ҩ Ԡ Ш  려.


================================================
FILE: sample/uchardet_test_samples/mk/iso-8859-5.txt
================================================
                    .           .                     .          (. )      (  ).          .                .         .


================================================
FILE: sample/uchardet_test_samples/mk/utf-8.txt
================================================
Хибернација или зимски сон е состојба на успорување на метаболизмот и ниска телесна температура кај одредени животни за време на зимата. Во хибернатори спаѓаат поголем број крзнени животни и мал број цицачи. На цицачите како мечката само малку им е снижена телесната температура се будат лесно и не се сметаат за вистински хибернатори. Повеќето хибернатори доека се активни складираат храна во засолништата (пр. верверичка) или резервни масти во телото (во масното ткиво). Тие можат да се разбудат повеќепати за време на зимата. Ладнокрвните животни мораат да хибернираат таму каде што надворешната температура се спушта под точка на смрзнување. Еднакво на хибернација за време на лето е естивација.


================================================
FILE: sample/uchardet_test_samples/mk/windows-1251.txt
================================================
                    .           .                     .          (. )      (  ).          .                .         .


================================================
FILE: sample/uchardet_test_samples/mt/iso-8859-3.txt
================================================
Il-Malti huwa l-ilsien nazzjonali tar-Repubblika ta' Malta. Huwa l-ilsien uffijali flimkien mal-Ingli; kif ukoll wieed mill-ilsna uffijali tal-Unjoni Ewropea. Dan l-ilsien gandu sisien u gerq semitiku, ta' djalett Garbi li ej mit-Tramuntana tal-Afrika, galekk qatt ma kellu rabta mill-qrib mal-Garbi Klassiku. Ida tul i-minijiet, minabba proess tal-Latinizzazzjoni ta' Malta, bdew delin bosta elementi lingwistii mill-Isqalli, djalett ta' art li wkoll gaddiet minn mien ta' akma Garbija. Wara l-Isqalli beda dieel ukoll it-Taljan, fuq kollox fi-mien tad-dala tal-Kavallieri tal-Ordni ta' San wann sa meta l-Ingli a post it-Taljan bala l-ilsien uffijali fil-Kostituzzjoni Kolonjali tal-1934. Il-Malti huwa l-ilsien wadieni ta' gajn semitika li jinkiteb b'ittri Latini. L-alfabett Malti magmul minn 30 ittra (24 konsonanti u 6 vokali) li jidhru f'din l-ordni:


================================================
FILE: sample/uchardet_test_samples/mt/utf-8.txt
================================================
Franza (Franċiż:France), uffiċjalment ir-Repubblika Franċiża (Franċiż:
République française), hi pajjiż fl-Ewropa tal-Punent. Il-belt belt kapitali
tagħha hi Pariġi. Hi membru tal-Unjoni Ewropea. Franza hi maqsuma f'22 régions
li huma suddiviżi f' départements.


================================================
FILE: sample/uchardet_test_samples/no/ibm865.txt
================================================
Pangramer brukes som ren underholdning; som skriveeksempel for prve p
hndskrift; som hjelpemiddel til  vise en font; eller som huskeregel for 
raskt teste tegnsettet i teknisk utstyr som behandler eller viser bokstaver.


Sr golfer med klle vant sexquiz p wc i hjemby.
Hvdingens kjre squaw fr litt pizza i Mexico by.
Vr kjre my i cape vde banjo, whist og quiz i taxifila.
IQ-ls WC-boms uten hrsel skjrer god pizza p xylofon.
Vr kjre zulu-my vde banjo, whist og quickstep fra taxi.
Etter quiz og whist m Jo bre fakkellys p vr srgende cox.
Taxisjfren quizet bedre om calypso, watt og klr p hjemveien.
Vr sre Zulu fra badeya spilte jo whist og quickstep i min taxi.
Du t ca fire wienerplser og tok taxi hjem fra byen med re fra quizen.
Jeg begynte  fortre en sandwich mens jeg kjrte taxi p vei til quiz.
Quisling var ein klppar til  spela jazz p xylofon, men lrte seg aldri  spela cembalo fr han drog til Washington.
Hvdingens kjre squaw fr litt pizza i Mexico by.


================================================
FILE: sample/uchardet_test_samples/no/iso-8859-1.txt
================================================
Pangramer brukes som ren underholdning; som skriveeksempel for prve p
hndskrift; som hjelpemiddel til  vise en font; eller som huskeregel for 
raskt teste tegnsettet i teknisk utstyr som behandler eller viser bokstaver.


Sr golfer med klle vant sexquiz p wc i hjemby.
Hvdingens kjre squaw fr litt pizza i Mexico by.
Vr kjre my i cape vde banjo, whist og quiz i taxifila.
IQ-ls WC-boms uten hrsel skjrer god pizza p xylofon.
Vr kjre zulu-my vde banjo, whist og quickstep fra taxi.
Etter quiz og whist m Jo bre fakkellys p vr srgende cox.
Taxisjfren quizet bedre om calypso, watt og klr p hjemveien.
Vr sre Zulu fra badeya spilte jo whist og quickstep i min taxi.
Du t ca fire wienerplser og tok taxi hjem fra byen med re fra quizen.
Jeg begynte  fortre en sandwich mens jeg kjrte taxi p vei til quiz.
Quisling var ein klppar til  spela jazz p xylofon, men lrte seg aldri  spela cembalo fr han drog til Washington.
Hvdingens kjre squaw fr litt pizza i Mexico by.

Et sted, cirka  inn i John Greens siste roman, Skilpadder hele veien ned,
begynte jeg og romanens forteller, Aza Holmes,  grte helt samtidig


================================================
FILE: sample/uchardet_test_samples/no/iso-8859-15.txt
================================================
Pangramer brukes som ren underholdning; som skriveeksempel for prve p
hndskrift; som hjelpemiddel til  vise en font; eller som huskeregel for 
raskt teste tegnsettet i teknisk utstyr som behandler eller viser bokstaver.


Sr golfer med klle vant sexquiz p wc i hjemby.
Hvdingens kjre squaw fr litt pizza i Mexico by.
Vr kjre my i cape vde banjo, whist og quiz i taxifila.
IQ-ls WC-boms uten hrsel skjrer god pizza p xylofon.
Vr kjre zulu-my vde banjo, whist og quickstep fra taxi.
Etter quiz og whist m Jo bre fakkellys p vr srgende cox.
Taxisjfren quizet bedre om calypso, watt og klr p hjemveien.
Vr sre Zulu fra badeya spilte jo whist og quickstep i min taxi.
Du t ca fire wienerplser og tok taxi hjem fra byen med re fra quizen.
Jeg begynte  fortre en sandwich mens jeg kjrte taxi p vei til quiz.
Quisling var ein klppar til  spela jazz p xylofon, men lrte seg aldri  spela cembalo fr han drog til Washington.
Hvdingens kjre squaw fr litt pizza i Mexico by.

Euro (symbol: ) er den Den europeiske unions myntenhet. Den
er innfrt i 19 av unionens 27 medlemsland (kjent som eurosonen) og i fire
mikrostater og noen andre land og omrder.


================================================
FILE: sample/uchardet_test_samples/no/utf-8.txt
================================================
Pangramer brukes som ren underholdning; som skriveeksempel for prøve på
håndskrift; som hjelpemiddel til å vise en font; eller som huskeregel for å
raskt teste tegnsettet i teknisk utstyr som behandler eller viser bokstaver.


Sær golfer med kølle vant sexquiz på wc i hjemby.
Høvdingens kjære squaw får litt pizza i Mexico by.
Vår kjære møy i cape øvde banjo, whist og quiz i taxifila.
IQ-løs WC-boms uten hørsel skjærer god pizza på xylofon.
Vår kjære zulu-møy øvde banjo, whist og quickstep fra taxi.
Etter quiz og whist må Jo bære fakkellys på vår sørgående cox.
Taxisjåføren quizet bedre om calypso, watt og klær på hjemveien.
Vår sære Zulu fra badeøya spilte jo whist og quickstep i min taxi.
Du åt ca fire wienerpølser og tok taxi hjem fra byen med ære fra quizen.
Jeg begynte å fortære en sandwich mens jeg kjørte taxi på vei til quiz.
Quisling var ein kløppar til å spela jazz på xylofon, men lærte seg aldri å spela cembalo før han drog til Washington.
Høvdingens kjære squaw får litt pizza i Mexico by.

Et sted, cirka ¾ inn i John Greens siste roman, Skilpadder hele veien ned,
begynte jeg og romanens forteller, Aza Holmes, å gråte helt samtidig


================================================
FILE: sample/uchardet_test_samples/no/windows-1252.txt
================================================
Pangramer brukes som ren underholdning; som skriveeksempel for prve p
hndskrift; som hjelpemiddel til  vise en font; eller som huskeregel for 
raskt teste tegnsettet i teknisk utstyr som behandler eller viser bokstaver.


Sr golfer med klle vant sexquiz p wc i hjemby.
Hvdingens kjre squaw fr litt pizza i Mexico by.
Vr kjre my i cape vde banjo, whist og quiz i taxifila.
IQ-ls WC-boms uten hrsel skjrer god pizza p xylofon.
Vr kjre zulu-my vde banjo, whist og quickstep fra taxi.
Etter quiz og whist m Jo bre fakkellys p vr srgende cox.
Taxisjfren quizet bedre om calypso, watt og klr p hjemveien.
Vr sre Zulu fra badeya spilte jo whist og quickstep i min taxi.
Du t ca fire wienerplser og tok taxi hjem fra byen med re fra quizen.
Jeg begynte  fortre en sandwich mens jeg kjrte taxi p vei til quiz.
Quisling var ein klppar til  spela jazz p xylofon, men lrte seg aldri  spela cembalo fr han drog til Washington.
Hvdingens kjre squaw fr litt pizza i Mexico by.

Euro (symbol:   valutakode: EUR) er den Den europeiske unions myntenhet. Den
er innfrt i 19 av unionens 27 medlemsland (kjent som eurosonen) og i fire
mikrostater og noen andre land og omrder.


================================================
FILE: sample/uchardet_test_samples/pl/ibm852.txt
================================================
Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)
ksiniczka litewska, krlowa Polski, od 1422 roku czwarta i ostatnia ona Wadysawa II
Jagiey.


================================================
FILE: sample/uchardet_test_samples/pl/iso-8859-13.txt
================================================
Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)
ksiniczka litewska, krlowa Polski, od 1422 roku czwarta i ostatnia ona Wadysawa II
Jagiey.


================================================
FILE: sample/uchardet_test_samples/pl/iso-8859-16.txt
================================================
Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)
ksiniczka litewska, krlowa Polski, od 1422 roku czwarta i ostatnia ona Wadysawa II
Jagiey.


================================================
FILE: sample/uchardet_test_samples/pl/iso-8859-2.txt
================================================
Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)
ksiniczka litewska, krlowa Polski, od 1422 roku czwarta i ostatnia ona Wadysawa II
Jagiey.


================================================
FILE: sample/uchardet_test_samples/pl/mac-centraleurope.txt
================================================
Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)
ksiniczka litewska, krlowa Polski, od 1422 roku czwarta i ostatnia ona Wadysawa II
Jagiey.


================================================
FILE: sample/uchardet_test_samples/pl/utf-8.txt
================================================
Zofia (Sonka) Holszańska herbu Hippocentaurus (ur. ok. 1405, zm. 21 września 1461 w Krakowie)
księżniczka litewska, królowa Polski, od 1422 roku czwarta i ostatnia żona Władysława II
Jagiełły.


================================================
FILE: sample/uchardet_test_samples/pl/windows-1250.txt
================================================
Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)
ksiniczka litewska, krlowa Polski, od 1422 roku czwarta i ostatnia ona Wadysawa II
Jagiey.


================================================
FILE: sample/uchardet_test_samples/pt/iso-8859-1.txt
================================================
Albertossauro (Albertosaurus sp., que significa "lagarto de Alberta" no Canad),
foi um gnero de dinossauro carnvoro e bpede presente no fim do perodo
Cretceo. Media cerca de 8 a 9 metros de comprimento, 3 metros de altura e
pesava menos de 2 toneladas. O Albertossauro viveu na Amrica do Norte e foi
descoberto no ano de 1884 por Joseph Burr Tyrrell em Alberta, no Canad, local
ao qual deve seu nome.


================================================
FILE: sample/uchardet_test_samples/pt/utf-8.txt
================================================
Albertossauro (Albertosaurus sp., que significa "lagarto de Alberta" no Canadá),
foi um género de dinossauro carnívoro e bípede presente no fim do período
Cretáceo. Media cerca de 8 a 9 metros de comprimento, 3 metros de altura e
pesava menos de 2 toneladas. O Albertossauro viveu na América do Norte e foi
descoberto no ano de 1884 por Joseph Burr Tyrrell em Alberta, no Canadá, local
ao qual deve seu nome.


================================================
FILE: sample/uchardet_test_samples/ro/ibm852.txt
================================================
Danemarca (n danez Sunet Danmark), oficial Regatul Danemarcei (n
danez Sunet Kongeriget Danmark), este un stat suveran din
Europa de Nord, avnd si dou tri constituente de peste mri, care fac parte
integrant din regat: Insulele Feroe n Atlanticul de Nord si Groenlanda n
America de Nord. Danemarca propriu-zis[a] este cea mai de sud dintre trile
nordice, aflat la sud-vest de Suedia si la sud de Norvegia, nvecinndu-se la
sud cu Germania. Tara const dintr-o peninsul mare, Iutlanda, si mai multe
insule, dintre care cele mai mari sunt Zealand, Funen, Lolland, Falster si
Bornholm, precum si sute de insulite denumite n general ,,Arhipelagul Danez".


================================================
FILE: sample/uchardet_test_samples/ro/iso-8859-16.txt
================================================
Danemarca (n danez Sunet Danmark), oficial Regatul Danemarcei (n
danez Sunet Kongeriget Danmark), este un stat suveran din
Europa de Nord, avnd i dou ri constituente de peste mri, care fac parte
integrant din regat: Insulele Feroe n Atlanticul de Nord i Groenlanda n
America de Nord. Danemarca propriu-zis[a] este cea mai de sud dintre rile
nordice, aflat la sud-vest de Suedia i la sud de Norvegia, nvecinndu-se la
sud cu Germania. ara const dintr-o peninsul mare, Iutlanda, i mai multe
insule, dintre care cele mai mari sunt Zealand, Funen, Lolland, Falster i
Bornholm, precum i sute de insulie denumite n general Arhipelagul Danez.


================================================
FILE: sample/uchardet_test_samples/ro/utf-8.txt
================================================
Danemarca (în daneză Sunet Danmark), oficial Regatul Danemarcei (în
daneză Sunet Kongeriget Danmark), este un stat suveran din
Europa de Nord, având și două țări constituente de peste mări, care fac parte
integrantă din regat: Insulele Feroe în Atlanticul de Nord și Groenlanda în
America de Nord. Danemarca propriu-zisă[a] este cea mai de sud dintre țările
nordice, aflată la sud-vest de Suedia și la sud de Norvegia, învecinându-se la
sud cu Germania. Țara constă dintr-o peninsulă mare, Iutlanda, și mai multe
insule, dintre care cele mai mari sunt Zealand, Funen, Lolland, Falster și
Bornholm, precum și sute de insulițe denumite în general „Arhipelagul Danez”.


================================================
FILE: sample/uchardet_test_samples/ro/windows-1250.txt
================================================
Danemarca (n danez Sunet Danmark), oficial Regatul Danemarcei (n
danez Sunet Kongeriget Danmark), este un stat suveran din
Europa de Nord, avnd si dou tri constituente de peste mri, care fac parte
integrant din regat: Insulele Feroe n Atlanticul de Nord si Groenlanda n
America de Nord. Danemarca propriu-zis[a] este cea mai de sud dintre trile
nordice, aflat la sud-vest de Suedia si la sud de Norvegia, nvecinndu-se la
sud cu Germania. Tara const dintr-o peninsul mare, Iutlanda, si mai multe
insule, dintre care cele mai mari sunt Zealand, Funen, Lolland, Falster si
Bornholm, precum si sute de insulite denumite n general Arhipelagul Danez.


================================================
FILE: sample/uchardet_test_samples/ru/ibm855.txt
================================================
CP855 -- ƷзƠ ֦ Է  MS-DOS  ֦֢  بᠤ . М    Ԡ ISO 8859-5.

ը֬  Р  ᢷ, ӠƨԷ  Ь᷷,   㷷 Ԩ Р.

ݨ Ԡ ֽ֦ 堢з ؠ  ASCII. Р ֦ ҷ ֢Ԡ Ԡ ֦   Է֦.


================================================
FILE: sample/uchardet_test_samples/ru/ibm866.txt
================================================
<<ୠ⨢ ஢>> (<<ୠ⨢ ஢ >>) -- ᭮ 
CP437  ࠭,   ᯥ᪨ ய᪨ ᨬ  ன
   ਫ, ⠢ ᥢ᪨ ᨬ ஭묨.
⥫쭮,     ணࠬ, ᯮ  ࠡ ⥪⮢
,  ⠪ ᯥ稢 ᯮ짮   ᨬ ਫ.

᪨ ⢮  ਠ⮢ ୠ⨢ ஢,  
ࠧ  ⮫쪮  0xF0 -- 0xFF (240--255). ᯮ짮
ᥢ 䨪-ᠬ, ᠢ訥 ᨬ 묨
ணࠬ⠬, ࠭    १ । 
業.


================================================
FILE: sample/uchardet_test_samples/ru/iso-8859-5.txt
================================================
ISO 8859-5 
8-        ISO-8859   .
ISO 8859-5     " " (     ,    ).


================================================
FILE: sample/uchardet_test_samples/ru/koi8-r.txt
================================================
-8 (  , 8 ), KOI8 -   ,   ASCII.      .         Unix-     ,    2010 ,   ,    .


================================================
FILE: sample/uchardet_test_samples/ru/mac-cyrillic.txt
================================================
 MacCyrillic     nj.

       
     ;  , 
  ,     ( ),
,    .

    ()   
ASCII.         .


================================================
FILE: sample/uchardet_test_samples/ru/utf-8.txt
================================================
Сурки образуют отчётливо выраженную группу из 14 или 15 видов (статус лесостепного сурка как отдельного вида является предметом обсуждения), в рамках семейства беличьих. Это относительно крупные, весом в несколько килограммов, животные, обитающие в открытых ландшафтах, в сооружаемых самостоятельно норах. Прародина сурков — Северная Америка, откуда они распространились через Берингию в Азию, и дальше — в Европу. В Евразии большинство исследователей выделяет 8 видов сурков: три или четыре вида, объединяемых в группу bobak (степной сурок, лесостепной сурок, серый сурок и монгольский сурок), населяющие широкую полосу степей и гор от Украины на западе до северо-западного Китая на востоке, единственный чисто европейский вид — альпийский сурок, три вида гор Центральной Азии — сурок Мензбира, длиннохвостый, или красный сурок и гималайский сурок и обособленный северо-восточный вид — черношапочный сурок. Разные виды сурков обособились в различных географических зонах и отличаются друг от друга особенностями поведения, но сохранили внешнее сходство и необходимость впадать в зимнюю спячку. Все сурки травоядны, селятся в норах, имеют тёплый мех и почти все живут колониями. Различаются равнинные сурки (байбаки) и сурки горные, живущие в суровых условиях альпийских гор, куда летнее тепло приходит поздно, а зима является рано. Сурки встречают свистом восход солнца[3]. Сурки иногда храпят[3].


================================================
FILE: sample/uchardet_test_samples/ru/windows-1251.txt
================================================
Windows-1251
   ,   8-      Microsoft Windows.    .     ,      Windows  19901991 .   ,     Microsoft.           ( ,      ).

Windows-1251     8-   (  CP866, KOI8-R  ISO 8859-5)    ,        (   );         : , , ,   .


================================================
FILE: sample/uchardet_test_samples/sk/ibm852.txt
================================================
Jupiter je piata planta v porad od Slnka, najvia a najhmotnejia planta
naej slnenej sstavy. Je pomenovan po rmskom bohovi Jupiterovi. Symbolom
planty je tylizovan znzornenie Jupiterovho boskho blesku.


================================================
FILE: sample/uchardet_test_samples/sk/iso-8859-2.txt
================================================
Jupiter je piata planta v porad od Slnka, najvia a najhmotnejia planta
naej slnenej sstavy. Je pomenovan po rmskom bohovi Jupiterovi. Symbolom
planty je tylizovan znzornenie Jupiterovho boskho blesku.


================================================
FILE: sample/uchardet_test_samples/sk/mac-centraleurope.txt
================================================
Jupiter je piata planta v porad od Slnka, najvia a najhmotnejia planta
naej slnenej sstavy. Je pomenovan po rmskom bohovi Jupiterovi. Symbolom
planty je tylizovan znzornenie Jupiterovho boskho blesku.


================================================
FILE: sample/uchardet_test_samples/sk/utf-8.txt
================================================
Jupiter je piata planéta v poradí od Slnka, najväčšia a najhmotnejšia planéta
našej slnečnej sústavy. Je pomenovaný po rímskom bohovi Jupiterovi. Symbolom
planéty je štylizované znázornenie Jupiterovho božského blesku.


================================================
FILE: sample/uchardet_test_samples/sk/windows-1250.txt
================================================
Jupiter je piata planta v porad od Slnka, najvia a najhmotnejia planta
naej slnenej sstavy. Je pomenovan po rmskom bohovi Jupiterovi. Symbolom
planty je tylizovan znzornenie Jupiterovho boskho blesku.


================================================
FILE: sample/uchardet_test_samples/sl/ibm852.txt
================================================
Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je
zmoen razviti in ohranjati ivljenje.

Ker je obstoj nezemeljskega ivljenja trenutno negotov, je raziskovanje
naseljivih planetov v glavnem ekstrapolacija razmer na Zemlji in znailnosti
Sonca in celotnega Osonja, ki govorijo v prid razvitju ivljenja. e posebej so
pomembni faktorji, ki so ohranili zapletene, mnogoceline organizme in ne le
preprosta, enocelina iva bitja, mikroorganizme. Raziskovanje in teorija v tej
smeri je del planetologije in razvijajoe astrobiologije.


================================================
FILE: sample/uchardet_test_samples/sl/iso-8859-16.txt
================================================
Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je
zmoen razviti in ohranjati ivljenje.

Ker je obstoj nezemeljskega ivljenja trenutno negotov, je raziskovanje
naseljivih planetov v glavnem ekstrapolacija razmer na Zemlji in znailnosti
Sonca in celotnega Osonja, ki govorijo v prid razvitju ivljenja. e posebej so
pomembni faktorji, ki so ohranili zapletene, mnogoceline organizme in ne le
preprosta, enocelina iva bitja, mikroorganizme. Raziskovanje in teorija v tej
smeri je del planetologije in razvijajoe astrobiologije.


================================================
FILE: sample/uchardet_test_samples/sl/iso-8859-2.txt
================================================
Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je
zmoen razviti in ohranjati ivljenje.

Ker je obstoj nezemeljskega ivljenja trenutno negotov, je raziskovanje
naseljivih planetov v glavnem ekstrapolacija razmer na Zemlji in znailnosti
Sonca in celotnega Osonja, ki govorijo v prid razvitju ivljenja. e posebej so
pomembni faktorji, ki so ohranili zapletene, mnogoceline organizme in ne le
preprosta, enocelina iva bitja, mikroorganizme. Raziskovanje in teorija v tej
smeri je del planetologije in razvijajoe astrobiologije.


================================================
FILE: sample/uchardet_test_samples/sl/mac-centraleurope.txt
================================================
Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je
zmoen razviti in ohranjati ivljenje.

Ker je obstoj nezemeljskega ivljenja trenutno negotov, je raziskovanje
naseljivih planetov v glavnem ekstrapolacija razmer na Zemlji in znailnosti
Sonca in celotnega Osonja, ki govorijo v prid razvitju ivljenja. e posebej so
pomembni faktorji, ki so ohranili zapletene, mnogoceline organizme in ne le
preprosta, enocelina iva bitja, mikroorganizme. Raziskovanje in teorija v tej
smeri je del planetologije in razvijajoe astrobiologije.


================================================
FILE: sample/uchardet_test_samples/sl/utf-8.txt
================================================
Naseljívi planét je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je
zmožen razviti in ohranjati življenje.

Ker je obstoj nezemeljskega življenja trenutno negotov, je raziskovanje
naseljivih planetov v glavnem ekstrapolacija razmer na Zemlji in značilnosti
Sonca in celotnega Osončja, ki govorijo v prid razvitju življenja. Še posebej so
pomembni faktorji, ki so ohranili zapletene, mnogocelične organizme in ne le
preprosta, enocelična živa bitja, mikroorganizme. Raziskovanje in teorija v tej
smeri je del planetologije in razvijajoče astrobiologije.


================================================
FILE: sample/uchardet_test_samples/sl/windows-1250.txt
================================================
Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je
zmoen razviti in ohranjati ivljenje.

Ker je obstoj nezemeljskega ivljenja trenutno negotov, je raziskovanje
naseljivih planetov v glavnem ekstrapolacija razmer na Zemlji in znailnosti
Sonca in celotnega Osonja, ki govorijo v prid razvitju ivljenja. e posebej so
pomembni faktorji, ki so ohranili zapletene, mnogoceline organizme in ne le
preprosta, enocelina iva bitja, mikroorganizme. Raziskovanje in teorija v tej
smeri je del planetologije in razvijajoe astrobiologije.


================================================
FILE: sample/uchardet_test_samples/sr/iso-8859-5.txt
================================================
     ,        .      ,  .     ,      .  ,    ,                .                ,      .          .     ,        .[2]


================================================
FILE: sample/uchardet_test_samples/sr/utf-8.txt
================================================
Мрмот је дугачак отприлике педесет сантиметара, заједно с репом који сам износи двадесет сантиметара. Тежак је четири до пет килограма, ретко више. Има прекрасно крзно сивкасте боје, које на светлости добија златносмеђе преливе. Као мишеви, зечеви и остали глодари, мрмот има секутиће који непрестано расту па мора често нешто да глође да би их трошио. На предњим ногама има четири прста наоружана повијеним канџама помоћу којих животиња узима траву и гранчице, приноси храну устима и копа земљу. На задњим ногама има пет прстију с прилично кратким канџама. Мрмот има веома оштар вид, а уши му хватају сваки и најслабији звук.[2]


================================================
FILE: sample/uchardet_test_samples/sr/windows-1251.txt
================================================
     ,        .      ,  .     ,      .  ,    ,                .                ,      .          .     ,        .[2]


================================================
FILE: sample/uchardet_test_samples/sv/iso-8859-1.txt
================================================
Mlle r en ttort p Kullahalvn i Brunnby socken i Hgans kommun, Skne ln.

Samhllet var frn brjan ett fiskelge, men kom att spela en stor roll i den
framvxande turismen i Sverige i slutet av 1800-talet. Till detta bidrog - och
bidrar - Mlles naturskna lge invid resunds norra utlopp, med Kullaberg som
bakgrund. Gemensamhetsbad fr mn och kvinnor introducerades i Ransvik i brjan
av 1900-talet. Storhetstiden som turistort intrffade strax fre frsta
vrldskriget, men ven under mellankrigstiden var turiststrmmarna stora.
Fortfarande r Mlle en populr turistort med en tredubbling av invnarantalet
under sommarmnaderna.


================================================
FILE: sample/uchardet_test_samples/sv/utf-8.txt
================================================
Mölle är en tätort på Kullahalvön i Brunnby socken i Höganäs kommun, Skåne län.

Samhället var från början ett fiskeläge, men kom att spela en stor roll i den
framväxande turismen i Sverige i slutet av 1800-talet. Till detta bidrog – och
bidrar – Mölles natursköna läge invid Öresunds norra utlopp, med Kullaberg som
bakgrund. Gemensamhetsbad för män och kvinnor introducerades i Ransvik i början
av 1900-talet. Storhetstiden som turistort inträffade strax före första
världskriget, men även under mellankrigstiden var turistströmmarna stora.
Fortfarande är Mölle en populär turistort med en tredubbling av invånarantalet
under sommarmånaderna.


================================================
FILE: sample/uchardet_test_samples/sv/windows-1252.txt
================================================
Mlle r en ttort p Kullahalvn i Brunnby socken i Hgans kommun, Skne ln.

Samhllet var frn brjan ett fiskelge, men kom att spela en stor roll i den
framvxande turismen i Sverige i slutet av 1800-talet. Till detta bidrog  och
bidrar  Mlles naturskna lge invid resunds norra utlopp, med Kullaberg som
bakgrund. Gemensamhetsbad fr mn och kvinnor introducerades i Ransvik i brjan
av 1900-talet. Storhetstiden som turistort intrffade strax fre frsta
vrldskriget, men ven under mellankrigstiden var turiststrmmarna stora.
Fortfarande r Mlle en populr turistort med en tredubbling av invnarantalet
under sommarmnaderna.


================================================
FILE: sample/uchardet_test_samples/th/iso-8859-11.txt
================================================
TIS-620

ҵðҹԵѳصˡ 620-2533, ͡.620-2533, ͷѡѹ TIS-620 繪شѡҵðҹصˡͧ ժ Ѻѡ·Ѻ

 TIS-620 ´ ISO-8859-11 ҡ ᵡҧѹ§ ISO-8859-11 ˹ A0  "äẺѴ" (no-break space) ǹ TIS-620 ʧǹ˹ A0  ˹  


================================================
FILE: sample/uchardet_test_samples/th/tis-620.txt
================================================
TIS-620

ҵðҹԵѳصˡ 620-2533, ͡.620-2533, ͷѡѹ TIS-620 繪شѡҵðҹصˡͧ ժ Ѻѡ·Ѻ

 TIS-620 ´ ISO-8859-11 ҡ ᵡҧѹ§ ISO-8859-11 ˹ A0  "äẺѴ" (no-break space) ǹ TIS-620 ʧǹ˹ A0  ˹  


================================================
FILE: sample/uchardet_test_samples/th/utf-8.txt
================================================
ยูนิโคด (อังกฤษ: Unicode) คือมาตรฐานอุตสาหกรรมที่ช่วยให้คอมพิวเตอร์แสดงผลและจัดการข้อความธรรมดาที่ใช้ในระบบการเขียนของภาษาส่วนใหญ่ในโลกได้อย่างสอดคล้องกัน ยูนิโคดประกอบด้วยรายการอักขระที่แสดงผลได้มากกว่า 100,000 ตัว พัฒนาต่อยอดมาจากมาตรฐานชุดอักขระสากล (Universal Character Set: UCS) และมีการตีพิมพ์ลงในหนังสือ The Unicode Standard เป็นแผนผังรหัสเพื่อใช้เป็นรายการอ้างอิง นอกจากนั้นยังมีการอธิบายวิธีการที่ใช้เข้ารหัสและการนำเสนอมาตรฐานของการเข้ารหัสอักขระอีกจำนวนหนึ่ง การเรียงลำดับอักษร กฎเกณฑ์ของการรวมและการแยกอักขระ รวมไปถึงลำดับการแสดงผลของอักขระสองทิศทาง (เช่นอักษรอาหรับหรืออักษรฮีบรูที่เขียนจากขวาไปซ้าย)


================================================
FILE: sample/uchardet_test_samples/tr/iso-8859-3.txt
================================================
Trke, Trk dili ya da Trkiye Trkesi, batda Balkanlar'dan balayp douda
Hazar Denizi sahasna kadar konuulan Altay dillerinden biridir. Ya, en eski
hesaplara gre 8500 olan Trke, bugn yaayan Dnya dilleri arasnda en eski
yazl belgelere sahip olan dildir. Bu belgeler, ivi yazl Smerce
tabletlerdeki alnt kelimelerdir.[12] Trk yaz dilleri iinde Ouz sahas yaz
dillerinden Osmanl Trkesinin devamn oluturur. Bata Trkiye olmak zere
eski Osmanl mparatorluu corafyasnda konuulan Trke, dnyada en fazla
konuulan 5. dildir. Trke sondan eklemeli bir dildir.[13] Bundan tr
kullanlan herhangi bir eylem zerinden istenildii kadar szck
tretilebilir.[14] Trkiye Trkesi bu ynnden dolay dier Trk dilleriyle
ortak ya da ayrk bulunan onlarca eke sahiptir.[15] Trke ok geni
kullanmyla birlikte zengin bir dil olmasnn yan sra, genel itibaryla
"zne-nesne-yklem" biimindeki cmle kuruluuna sahiptir.


================================================
FILE: sample/uchardet_test_samples/tr/iso-8859-9.txt
================================================
Trke, Trk dili ya da Trkiye Trkesi, batda Balkanlar'dan balayp douda
Hazar Denizi sahasna kadar konuulan Altay dillerinden biridir. Ya, en eski
hesaplara gre 8500 olan Trke, bugn yaayan Dnya dilleri arasnda en eski
yazl belgelere sahip olan dildir. Bu belgeler, ivi yazl Smerce
tabletlerdeki alnt kelimelerdir.[12] Trk yaz dilleri iinde Ouz sahas yaz
dillerinden Osmanl Trkesinin devamn oluturur. Bata Trkiye olmak zere
eski Osmanl mparatorluu corafyasnda konuulan Trke, dnyada en fazla
konuulan 5. dildir. Trke sondan eklemeli bir dildir.[13] Bundan tr
kullanlan herhangi bir eylem zerinden istenildii kadar szck
tretilebilir.[14] Trkiye Trkesi bu ynnden dolay dier Trk dilleriyle
ortak ya da ayrk bulunan onlarca eke sahiptir.[15] Trke ok geni
kullanmyla birlikte zengin bir dil olmasnn yan sra, genel itibaryla
"zne-nesne-yklem" biimindeki cmle kuruluuna sahiptir.


================================================
FILE: sample/uchardet_test_samples/tr/utf-8.txt
================================================
Türkiye, resmî adıyla Türkiye Cumhuriyeti, topraklarının büyük bölümü Anadolu'da, küçük bir bölümü ise Balkan Yarımadası'nın güneydoğu uzantısı olan Trakya'da yer alan ülke. Kuzeybatıda Bulgaristan, batıda Yunanistan, kuzeydoğuda Gürcistan, doğuda Ermenistan, İran ve Azerbaycan'ın ekslav toprağı Nahçıvan, güneydoğuda ise Irak ve Suriye komşusudur. Güneyini Kıbrıs adası ve Akdeniz. Batısını Ege Denizi ve kuzeyini Karadeniz çevreler. Marmara Denizi ise İstanbul Boğazı ve Çanakkale Boğazı ile birlikte Anadolu'yu Trakya'dan yani Asya'yı Avrupa'dan ayırır. Türkiye, Avrupa ve Asya'nın kavşak noktasında yer alması sayesinde önemli bir jeostratejik güce sahiptir.


================================================
FILE: sample/uchardet_test_samples/uk/utf-8.txt
================================================
Бабак[1][2], байбак[1], бобак[3] (Marmota Blumenbach, 1779) — рід гризунів родини вивіркових (Sciuridae) поширених в Євразії та Північній Америці. Бабаки в основному їдять зелень і багато видів трав, ягід, лишайники, мохи, коріння і квіти. Як правило, живуть у норах і перебувають у сплячці впродовж зими. Більшість бабаків дуже соціальні. У залежності від виду, довжина голови й тіла становить від 30 до 60 сантиметрів, довжина хвоста — від 10 до 25 см, вага становить від 3 до 7 кілограмів[4].


================================================
FILE: sample/uchardet_test_samples/uk/windows-1251.txt
================================================
[1][2], [1], [3] (Marmota Blumenbach, 1779)     (Sciuridae)   糿  ϳ .         , , , ,   .  ,         .    .    ,       30  60 ,     10  25 ,    3  7 [4].


================================================
FILE: sample/uchardet_test_samples/vi/utf-8.txt
================================================
Chữ Quốc ngữ là hệ chữ viết thống nhất chính thức hiện nay của tiếng Việt, sử
dụng ký tự La Tinh, dựa trên các bảng chữ cái của nhóm ngôn ngữ Rôman,[1] đặc
biệt là bảng chữ cái Bồ Đào Nha,[2] với các dấu phụ chủ yếu từ bảng chữ cái Hy
Lạp.


================================================
FILE: sample/uchardet_test_samples/vi/viscii.txt
================================================
Ch Quc ng l h ch vit thng nht chnh thc hin nay ca ting Vit, s
dng k t La Tinh, da trn cc bng ch ci ca nhm ngn ng Rman,[1] c
bit l bng ch ci B o Nha,[2] vi cc du ph ch yu t bng ch ci Hy
Lp.


================================================
FILE: sample/uchardet_test_samples/vi/windows-1258.txt
================================================
Ch Quc ng l h ch vit thng nht chnh thc hin nay cua ting Vit, s
dung ky t La Tinh, da trn cc bang ch ci cua nhm ngn ng Rman,[1] c
bit l bang ch ci B o Nha,[2] vi cc du phu chu yu t bang ch ci Hy
Lap.


================================================
FILE: sample/uchardet_test_samples/zh/big5.txt
================================================
c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤

================================================
FILE: sample/uchardet_test_samples/zh/euc-tw.txt
================================================
EUC-TWҳƺġCNS 11643??ƺEUC-TWŷ


================================================
FILE: sample/uchardet_test_samples/zh/gb18030.txt
================================================
ļļļļļļļļļļ

================================================
FILE: sample/uchardet_test_samples/zh/utf-8.txt
================================================
汉字漢字統一編碼萬國碼


================================================
FILE: scripts/extract_change_log.py
================================================
import argparse
import os
import re
import sys

# 设置 Python 的默认编码为 utf-8
os.environ['PYTHONIOENCODING'] = 'utf-8'

if hasattr(sys.stdout, 'reconfigure'):
    sys.stdout.reconfigure(encoding='utf-8')  # this works
else:
    import io
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')

SELF_DIR = os.path.split(os.path.realpath(__file__))[0].replace("\\", "/")
SELF_BASENAME = os.path.split(os.path.realpath(__file__))[1]
REPO_DIR = os.path.abspath(f"{SELF_DIR}/..").replace("\\", "/")

CHANGE_LOG_FILENAME = f"{REPO_DIR}/build/CHANGELOG.txt"
README_FILENAME_CN = f"{REPO_DIR}/README.md"
README_FILENAME_EN = f"{REPO_DIR}/README-en.md"
VERSION_START_STR_CN = "# 版本记录"
VERSION_START_STR_EN = "# Version"

def ParseArguments() -> argparse.Namespace:
    parser = argparse.ArgumentParser()
    parser.add_argument("--tag", required=True)
    args = parser.parse_args()
    print(f"[{SELF_BASENAME}] args: {args}")
    return args

def SearchTag(filename: str, tag: str, versionStartStr: str) -> str:
    with open(filename, "r", encoding="utf-8") as f:
        lines = f.readlines()
    pos = 0
    found = False
    for i in range(len(lines)):
        line = lines[i]
        if line.find(versionStartStr) != -1:
            pos = i
            found = True
            break
    if not found:
        raise RuntimeError(f"version start string \"{versionStartStr}\" not found at {filename}")
    
    found = False
    for i in range(pos, len(lines)):
        line = lines[i]
        if line.startswith(tag):
            pos = i
            found = True
            break
    if not found:
        raise RuntimeError(f"tag \"{tag}\" not found at {filename}")
    
    ret = [line.strip()]
    pos += 1
    for i in range(pos, len(lines)):
        line = lines[i]
        if line == "\n" or line == "\r\n":
            break
        if re.match(r"v\d+\.\d+.*", line):
            break
        ret.append(line.strip())
    return "\n".join(ret)


def main(args: argparse.Namespace):
    cnContent = SearchTag(README_FILENAME_CN, args.tag, VERSION_START_STR_CN)
    enContent = SearchTag(README_FILENAME_EN, args.tag, VERSION_START_STR_EN)

    changeLog = ""
    changeLog += cnContent
    changeLog += "\n"
    changeLog += enContent
    print(f"[{SELF_BASENAME}] CHANGELOG.txt:")
    print("=" * 30)
    print(changeLog)
    print("=" * 30)
    with open(CHANGE_LOG_FILENAME, "w", encoding="utf-8") as f:
        f.write(changeLog)

if __name__ == "__main__":
    args = ParseArguments()
    main(args)


================================================
FILE: src/CMakeLists.txt
================================================
add_subdirectory(Common)
add_subdirectory(Control)
add_subdirectory(Core)
add_subdirectory(Translator)
add_subdirectory(SmartCharsetConverter)
add_subdirectory(SmartCharsetConverter-imgui)


================================================
FILE: src/Common/CMakeLists.txt
================================================
# ==============================
file(GLOB_RECURSE SRC_CODE
	*.h
	*.cpp
	)

add_library(Common STATIC ${SRC_CODE})


================================================
FILE: src/Common/CommandLineParser.cpp
================================================
#include "CommandLineParser.h"
#include "tstring.h"

std::vector<std::string> GetCommandLineArgs() {
    std::vector<std::string> args;
    LPWSTR *szArglist;
    int nArgs;
    int i;

    szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
    if (NULL == szArglist) {
        throw std::runtime_error("CommandLineToArgvW failed");
    }

    for (i = 0; i < nArgs; i++) {
        args.push_back(to_utf8(szArglist[i]));
    }

    // Free memory allocated for CommandLineToArgvW arguments.
    LocalFree(szArglist);

    return args;
}


================================================
FILE: src/Common/CommandLineParser.h
================================================
#pragma once

#include <Windows.h>

#include <iostream>
#include <vector>
#include <string>

std::vector<std::string> GetCommandLineArgs();


================================================
FILE: src/Common/ConsoleSettings.cpp
================================================
#include "ConsoleSettings.h"

#include <cassert>

void SetConsoleColor(ConsoleColor color) noexcept {
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    assert(hConsole);
    BOOL ok = SetConsoleTextAttribute(hConsole, static_cast<WORD>(color));
    assert(ok);
    HANDLE hConsoleErr = GetStdHandle(STD_ERROR_HANDLE);
    assert(hConsoleErr);
    ok = SetConsoleTextAttribute(hConsoleErr, static_cast<WORD>(color));
    assert(ok);
}


================================================
FILE: src/Common/ConsoleSettings.h
================================================
#pragma once

#include <Windows.h>

enum class ConsoleColor { GREEN = 10, BLUE = 11, RED = 12, PINK = 13, YELLOW = 14, WHITE = 15 };

void SetConsoleColor(ConsoleColor color = ConsoleColor::WHITE) noexcept;

================================================
FILE: src/Common/ErrorFunction.cpp
================================================
#include "ErrorFunction.h"

using namespace std;

// 根据错误码返回对应的错误信息
std::tstring GetLastErrorString(DWORD errorCode) {
    TCHAR *lpMsgBuf = nullptr;

    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL,
                  errorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (TCHAR *)&lpMsgBuf, 0, NULL);

    tstring ret(lpMsgBuf);

    LocalFree(lpMsgBuf);
    return ret;
}

================================================
FILE: src/Common/ErrorFunction.h
================================================
#pragma once

#include "tstring.h"

// 根据错误码返回对应的错误信息
std::tstring GetLastErrorString(DWORD errorCode);


================================================
FILE: src/Common/FileFunction.cpp
================================================
#define _CRT_SECURE_NO_WARNINGS
#include "FileFunction.h"

#include <algorithm>
#include <tchar.h>
#include <memory>
#include <assert.h>

#include <commdlg.h>

#include <Shlobj.h>   //选择文件夹对话框
#include <shellapi.h> //CommandLineToArgvW
#pragma comment(lib, "Shell32.lib")

#undef max
#undef min

using namespace std;

// 文件对话框 存储文件列表字符串的缓冲长度。MAX_PATH是肯定不够的,选几个就超出了。
// 据说nMaxFile虽然是DWORD类型,但只用了前2个字节,所以这里设成int16_t最大值
const int TFileDialog_BUF_SIZE = 32767;

std::unique_ptr<TCHAR[]> ToTCHARArray(const std::tstring &s) {
    auto size = s.size();
    unique_ptr<TCHAR[]> ret(new TCHAR[size + 1]);
    memcpy(ret.get(), s.data(), size * sizeof(TCHAR));
    ret[size] = TEXT('\0');
    return ret;
}

TFileDialog::TFileDialog(HWND hwndOwner) {
    // Initialize OPENFILENAME
    ZeroMemory(&ofn, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner = hwndOwner;

    result = unique_ptr<TCHAR[]>(new TCHAR[TFileDialog_BUF_SIZE]);
    result[0] = TEXT('\0');
    ofn.lpstrFile = result.get();
    ofn.nMaxFile = TFileDialog_BUF_SIZE;

    ofn.nFilterIndex = 1;
    ofn.lpstrInitialDir = NULL;
}

TFileDialog::TFileDialog(HWND hwndOwner, std::vector<std::pair<std::tstring, std::tstring>> vecFilter, bool multiSelect)
    : TFileDialog(hwndOwner) {
    SetFilter(vecFilter);

    ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    if (multiSelect) {
        ofn.Flags |= OFN_ALLOWMULTISELECT;
    }
}

void TFileDialog::SetFilter(std::vector<std::pair<std::tstring, std::tstring>> vecFilter) {
    // lpstrFilter格式:TEXT("机构设计文件(*.lml)\0*.lml\0\0")
    std::tstring ret;
    for (auto &pr : vecFilter) {
        auto &name = pr.first;
        auto &reg = pr.second;
        ret += name + TEXT('\0') + reg + TEXT('\0');
    }
    ret += TEXT('\0');

    filter = ToTCHARArray(ret);

    ofn.lpstrFilter = filter.get(); // 两个\0表示结束
}

void TFileDialog::SetTitle(const std::tstring &title) {
    this->title = ToTCHARArray(title);
    ofn.lpstrTitle = this->title.get();
}

bool TFileDialog::Open() {
    TCHAR originDir[1024];
    GetCurrentDirectory(1024, originDir);
    bool ok = ::GetOpenFileName(&ofn);
    if (!ok) {
        auto err = CommDlgExtendedError();

        if (err == 0x3003) // FNERR_BUFFERTOOSMALL
        {
            throw runtime_error("文件选太多。少选一点试试。");
        }
    }

    SetCurrentDirectory(originDir);
    return ok;
}

std::vector<std::tstring> TFileDialog::GetResult() const {
    // 如果没结果,返回空
    if (ofn.lpstrFile[0] == TEXT('\0')) {
        return {};
    }

    // 如果是单选
    if ((ofn.Flags & OFN_ALLOWMULTISELECT) == 0) {
        return {ofn.lpstrFile};
    }

    // 如果是多选
    std::vector<std::tstring> ans;
    tstring dir, temp;
    auto p = ofn.lpstrFile;
    int state = 0;
    for (DWORD i = 0; i < ofn.nMaxFile; ++i) {
        auto c = p[i];
        switch (state) {
        case 0: // 状态0:第一次遇到\0之前
            if (c == TEXT('\0')) {
                ans.push_back(temp);
                temp.clear();
                state = 1;
            } else {
                temp += c;
            }
            break;
        case 1: // 状态1:中途的字符
            if (c == TEXT('\0')) {
                goto end;
            } else {
                temp += c;
                state = 2;

                dir = ans[0];
                ans.pop_back();
            }
            break;
        case 2:                  // 状态2:中途已遇到\0
            if (c == TEXT('\0')) // 再次遇到\0,结束
            {
                ans.push_back(dir + TEXT('\\') + temp);
                temp.clear();
                state = 3;
            } else {
                temp += c;
            }
            break;
        case 3:
            if (c == TEXT('\0')) {
                goto end;
            } else {
                temp += c;
                state = 2;
            }
            break;
        }
    }
end:

    return ans;
}

void TFileDialog::SetResult(const std::tstring &s) {
    result = ToTCHARArray(s);
    ofn.lpstrFile = result.get();
}

bool TFileDialog::Save() {
    ofn.Flags = OFN_PATHMUSTEXIST;

    // 设为空可以自动加上选择的后缀名,否则无论选什么后缀,
    // 只要没有输入.txt这种,都是无后缀
    ofn.lpstrDefExt = TEXT("");

    return ::GetSaveFileName(&ofn);
}

TFolderBrowser::TFolderBrowser(HWND hwndOwner, std::tstring title) : hWndOwner(hwndOwner), title(title) {}

bool TFolderBrowser::Open(std::tstring &fileName) {
    assert(hWndOwner);
    auto BrowserCallbackProc = [](HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) -> int {
        if (uMsg == BFFM_INITIALIZED) {
            SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
        }
        return 0;
    };

    TCHAR szBuffer[MAX_PATH] = {0};

    BROWSEINFO bi = {0};
    bi.hwndOwner = hWndOwner;
    bi.pszDisplayName = szBuffer; // 接收文件夹的缓冲区
    bi.lpszTitle = title.c_str(); // 标题
    bi.ulFlags = BIF_NEWDIALOGSTYLE;

    // 使用回调传入初始路径
    bi.lParam = (LPARAM)fileName.c_str();
    bi.lpfn = (BFFCALLBACK)BrowserCallbackProc;

    LPITEMIDLIST idl = SHBrowseForFolder(&bi);
    bool ret = SHGetPathFromIDList(idl, szBuffer);
    if (ret)
        fileName = szBuffer;
    return ret;
}

// 传入index=1则得到传入文件名
// 失败返回空串
#ifdef UNICODE
std::wstring GetCommandLineByIndex(int index) {
    int nArgs;
    LPWSTR *szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
    if (szArglist && nArgs >= index + 1) {
        return szArglist[index];
    }
    return L"";
}
#else
std::string GetCommandLineByIndex(int index) {
    int nArgs;
    LPWSTR *szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
    if (szArglist && nArgs >= index + 1) {
        return szArglist[index];
    }
    return L"";
}

#endif

bool GetFileExists(const std::string filename) {
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;

    hFind = FindFirstFileW(utf8_to_wstring(filename).c_str(), &FindFileData);

    if (hFind == INVALID_HANDLE_VALUE) {
        return false;
    } else {
        if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
            // is folder
            FindClose(hFind);
            return false;
        } else {
            FindClose(hFind);
            return true;
        }
    }
}

vector<tstring> SplitPath(const std::tstring &s) {
    vector<tstring> ret;
    auto slash = s.find_last_of(TEXT("/\\")); // 找最后一个正斜杠或者反斜杠位置

    if (slash != tstring::npos) // 存在
    {
        ret.push_back(s.substr(0, slash));             // 得到纯路径
        auto vec = SplitFileName(s.substr(slash + 1)); // 分割文件名
        ret.insert(ret.end(), vec.begin(), vec.end());
    } else {
        ret.push_back(TEXT(""));
        auto vec = SplitFileName(s);
        ret.insert(ret.end(), vec.begin(), vec.end());
    }
    return ret;
}

vector<tstring> SplitFileName(const std::tstring &s) {
    auto dot = s.find_last_of(TEXT('.')); // 从后寻找.
    if (dot != tstring::npos)
        return {s.substr(0, dot), s.substr(dot)};
    else
        return {s, TEXT("")};
}

std::string GetNameAndExt(std::string s) noexcept {
    string ret;
    auto slash = s.find_last_of("/\\"); // 从后寻找正反斜杠
    if (slash != string::npos) {
        ret = s.substr(slash + 1);
    } else {
        ret = s;
    }
    return ret;
}

// e.g. ext="txt"
tstring ChangeExtend(tstring fileName, tstring ext) {
    auto slash_pos = fileName.find_last_of('\\');
    auto dot_pos = fileName.find_last_of('.');
    if (dot_pos == tstring::npos ||
        (slash_pos != tstring::npos && dot_pos < slash_pos)) // e.g. "Name" "dir.dir\file.ext"
    {
        return fileName + TEXT('.') + ext;
    }
    return fileName.substr(0, dot_pos) + TEXT('.') + ext;
}

std::string GetExtend(std::string fileName) {
    auto slash_pos = fileName.find_last_of('\\');
    auto dot_pos = fileName.find_last_of('.');
    if (dot_pos == string::npos || (slash_pos != string::npos && dot_pos < slash_pos)) // e.g. "Name" "dir.dir\file"
    {
        return "";
    }
    return fileName.substr(dot_pos + 1);
}

// 取得文件大小,不改变读写位置
uint64_t GetFileSize(FILE *fp) {
    long long origin_pos = _ftelli64(fp);
    _fseeki64(fp, 0LL, SEEK_END);
    long long ret = _ftelli64(fp);
    _fseeki64(fp, origin_pos, SEEK_SET);
    return ret;
}

uint64_t GetFileSize(std::string fileName) {
    std::wstring wfilename = utf8_to_wstring(fileName);
    FILE *fp = _wfopen(wfilename.c_str(), L"rb");
    if (fp == nullptr) {
        throw file_io_error(string("\"") + fileName + "\" can't open.", fileName);
    }
    uint64_t sz = GetFileSize(fp);
    fclose(fp);
    return sz;
}

std::string FileSizeToHumanString(uint64_t fileSize) {
    double d;
    char buf[64];
    if (fileSize >= GB) {
        d = fileSize / (double)GB;
        sprintf(buf, "%.2f GB", d);
    } else {
        if (fileSize >= MB) {
            d = fileSize / (double)MB;
            sprintf(buf, "%.2f MB", d);
        } else if (fileSize >= KB) {
            d = fileSize / (double)KB;
            sprintf(buf, "%.2f KB", d);
        } else {
            d = static_cast<double>(fileSize);
            sprintf(buf, "%.0f B", d);
        }
    }

    return buf;
}

std::tuple<std::unique_ptr<char[]>, uint64_t> ReadFileToBuffer(std::string fileName, uint64_t limitSize) {
    uint64_t bufSize = GetFileSize(fileName);

    if (limitSize != 0) {
        bufSize = std::min(bufSize, limitSize);
    }

    unique_ptr<char[]> buf = make_unique<char[]>(bufSize);

    // 如果是空文件,就不用读了
    if (bufSize == 0) {
        return make_tuple(std::move(buf), bufSize);
    }

    std::wstring wfilename = utf8_to_wstring(fileName);
    FILE *fp = _wfopen(wfilename.c_str(), TEXT("rb"));
    if (fp == nullptr)
        throw file_io_error(string("\"") + fileName + "\" can't open.", fileName);
    auto ret = fread(buf.get(), bufSize, 1, fp);
    if (ret < 1) {
        fclose(fp);
        throw file_io_error(string("\"") + fileName + "\" can't read.", fileName);
    }
    fclose(fp);

    return make_tuple(std::move(buf), bufSize);
}

void WriteFileFromBuffer(std::string fileName, const char buf[], uint64_t bufSize) {
    std::wstring wfilename = utf8_to_wstring(fileName);
    FILE *fp = _wfopen(wfilename.c_str(), TEXT("wb"));
    if (fp == nullptr)
        throw file_io_error(string("\"") + fileName + "\" can't open.", fileName);
    auto ret = fwrite(buf, bufSize, 1, fp);
    if (ret < 1) {
        fclose(fp);
        throw file_io_error(string("\"") + fileName + "\" can't write.", fileName);
    }
    fclose(fp);
}

void WriteDetailFile(HWND hWnd, std::tstring filename, std::function<void(std::tofstream &ofs)> fnWrite) {
    TFileDialog fileDialog(hWnd, {{TEXT("txt"), TEXT("*.txt")}});
    fileDialog.SetResult(filename);
    if (fileDialog.Save()) {
        tofstream ofs(filename);

        if (ofs.fail()) {
            tstring errInfo = TEXT("写入") + filename + TEXT("失败。可能是文件正在被占用或者没有权限。");
            ::MessageBox(hWnd, errInfo.c_str(), TEXT("出错"), MB_OK | MB_ICONERROR);
            return;
        }

        fnWrite(ofs);
        ofs.close();

        tstring info = filename + TEXT("已写入。");
        ::MessageBox(hWnd, info.c_str(), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
    }
}

// 失败抛出file_io_error类型自定义异常
void findFiles(std::vector<std::string> &ret, std::string lpPath, std::vector<std::string> dotextNames,
               bool enterSubFolder) {
    string szFile;
    WIN32_FIND_DATA FindFileData;

    string szFind = lpPath + "\\*";

    HANDLE hFind = ::FindFirstFileW(utf8_to_wstring(szFind).c_str(), &FindFileData);

    if (INVALID_HANDLE_VALUE == hFind) {
        throw file_io_error("Invalid folder:" + szFind, szFind);
        return;
    }

    do {
        if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
            // 是目录
            if (FindFileData.cFileName[0] != TEXT('.')) // 不是以.开头的目录
            {
                if (enterSubFolder) {
                    // 进入子目录
                    szFile = lpPath + "\\" + to_utf8(FindFileData.cFileName);
                    findFiles(ret, szFile, dotextNames, enterSubFolder);
                }
            }
        } else {
            // 是文件
            std::string filePath = lpPath + "\\" + to_utf8(FindFileData.cFileName);
            if (dotextNames.empty()) {
                ret.push_back(filePath);
            } else {
                string filename(tolower(to_utf8(FindFileData.cFileName)));
                for (auto &dotext : dotextNames) {
                    if (filename.substr(filename.length() - dotext.length(), dotext.length()) ==
                        dotext) // 文件名后n位和扩展名相同
                    {
                        ret.push_back(filePath);
                    }
                }
            }
            //        if ( szFile.empty() )
            //        {
            ////szFile为空,为当前目录
            //            std::string filePath = szFile+FindFileData.cFileName;
            //            file_lists.push_back(filePath);
            //        }
            //        else
            //        {
            ////非当前目录,输出全路径
            //            std::string filePath = lpPath+"\\"+FindFileData.cFileName;
            //            file_lists.push_back(filePath);
            //        }
        }

    } while (::FindNextFile(hFind, &FindFileData));

    ::FindClose(hFind);
}

// 失败抛出file_io_error类型自定义异常
std::vector<std::string> TraversalAllFileNames(std::string lpPath, std::vector<std::string> dotextNames,
                                               bool enterSubFolder) {
    std::vector<std::string> file_lists;
    findFiles(file_lists, lpPath, dotextNames, enterSubFolder);
    return file_lists;
}

================================================
FILE: src/Common/FileFunction.h
================================================
#pragma once

#include "tstring.h"
#include <vector>
#include <fstream>
#include <functional>
#include <Windows.h>
#include <commdlg.h> // OPENFILENAME

class TFileDialog {
private:
    OPENFILENAME ofn;
    std::unique_ptr<TCHAR[]> title;
    std::unique_ptr<TCHAR[]> result;
    std::unique_ptr<TCHAR[]> filter;

public:
    TFileDialog() = delete;
    TFileDialog(const TFileDialog &) = delete;
    TFileDialog(HWND hwndOwner);

    // 示例:m_hWnd, {{"txt文本文件","*.txt"}}
    TFileDialog(HWND hwndOwner, std::vector<std::pair<std::tstring, std::tstring>> vecFilter, bool multiSelect = false);

    void SetFilter(std::vector<std::pair<std::tstring, std::tstring>> vecFilter);

    void SetTitle(const std::tstring &title);

    void SetResult(const std::tstring &s);

    std::vector<std::tstring> GetResult() const;

    bool Open();

    bool Save();
};

class TFolderBrowser {
public:
    TFolderBrowser(HWND hwndOwner, std::tstring title = TEXT("请选择一个文件夹"));

    // fileName用于赋予初始路径,若用户点了取消,将不会对值产生影响
    bool Open(std::tstring &fileName);

private:
    std::tstring title;
    HWND hWndOwner;
};

// 自定义的文件IO异常。继承自runtime_error
class file_io_error : public std::runtime_error {
public:
    std::string _filename;
    file_io_error(std::string s, std::string filename) : std::runtime_error(s), _filename(filename) {}
    const std::string &filename() {
        return _filename;
    }
};

const uint64_t KB = 1024;
const uint64_t MB = KB * KB;
const uint64_t GB = MB * MB;

// 传入index=1则得到传入文件名
// 失败返回空串
std::wstring GetCommandLineByIndex(int index);

// 判断文件是否存在
bool GetFileExists(const std::string filename);

// 分割完整路径为 {路径,文件名不带后缀,.后缀}
std::vector<std::tstring> SplitPath(const std::tstring &s);

// 从[文件名+后缀]的字符串中分割出 { 文件名不带后缀,.后缀 }
std::vector<std::tstring> SplitFileName(const std::tstring &s);

// 从完整路径得到 文件名+后缀,若本身不含正反斜杠,则返回自身
std::string GetNameAndExt(std::string s) noexcept;

// e.g. ext="txt"
std::tstring ChangeExtend(std::tstring fileName, std::tstring ext);

// e.g. ext="txt"
std::string GetExtend(std::string fileName);

// 取得文件大小,不改变读写位置
uint64_t GetFileSize(FILE *fp);

// 取得文件大小
// 失败抛出file_io_error类型自定义异常
uint64_t GetFileSize(std::string fileName);

std::string FileSizeToHumanString(uint64_t fileSize);

/*
 * @brief 给定文件名,读取到一个buffer
 * @limitSize 限制大小。为0代表读完。不为0的话,最大读取limitSize大小。
 * @exception file_io_error 失败抛出异常
 */
std::tuple<std::unique_ptr<char[]>, uint64_t> ReadFileToBuffer(std::string fileName, uint64_t limitSize = 0);

// 失败抛出file_io_error类型自定义异常
void WriteFileFromBuffer(std::string fileName, const char buf[], uint64_t bufSize);

// 弹出文件对话框,然后按照给定文件名写入一个文本文件
// 传入的filename会在文件对话框中显示为默认文件名
//  fnWrite中定义要写入的内容,不需要进行打开关闭操作
// 写入成功或者失败均会弹出对话框提示
void WriteDetailFile(HWND hWnd, std::tstring filename, std::function<void(std::tofstream &ofs)> fnWrite);

// 失败抛出file_io_error类型自定义异常
std::vector<std::string> TraversalAllFileNames(std::string lpPath, std::vector<std::string> dotextNames = {},
                                               bool enterSubFolder = true);

================================================
FILE: src/Common/ResourceLoader.cpp
================================================
#include "ResourceLoader.h"

#include <Windows.h>

#include <cassert>

std::vector<char> LoadCustomFileFromResource(int id, const std::wstring &resourceType) {

    HRSRC hResource = FindResourceW(NULL, MAKEINTRESOURCE(id), resourceType.c_str());
    // 处理资源未找到的情况
    assert(hResource);

    HGLOBAL hResData = LoadResource(NULL, hResource);
    // 处理资源加载失败的情况
    assert(hResData);

    DWORD dwResSize = SizeofResource(NULL, hResource);
    // 处理资源大小为0的情况
    assert(dwResSize);

    LPBYTE lpResData = (LPBYTE)LockResource(hResData);
    // 处理资源锁定失败的情况
    assert(lpResData);

    std::vector<char> ret(dwResSize);
    memcpy(ret.data(), lpResData, dwResSize);

    return ret;
}

================================================
FILE: src/Common/ResourceLoader.h
================================================
#pragma once

#include <vector>
#include <string>

std::vector<char> LoadCustomFileFromResource(int id, const std::wstring &resourceType);

================================================
FILE: src/Common/SingleApplication.h
================================================
#pragma once

#include <tstring.h>

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <Windows.h>

/*
防多开类

用法:
SingleApplication single;
if (single.IsRunning(TEXT("AppTitle")))
{
        throw runtime_error("只能同时运行一个实例!");
}

*/
class SingleApplication {
public:
    ~SingleApplication() { ReleaseMutex(mutex); }

    bool IsRunning(const std::tstring &mutex_name) {
        mutex = OpenMutex(MUTEX_ALL_ACCESS, 0, mutex_name.c_str());
        if (nullptr == mutex) {
            mutex = CreateMutex(0, 0, mutex_name.c_str());
            return false;
        } else {
            return true;
        }
    }

private:
    HANDLE mutex;
};

================================================
FILE: src/Common/ThreadPool/SafeQueue.h
================================================
#pragma once

#include <queue>
#include <mutex>
#include <optional>

template <typename T> class SafeQueue {
public:
    SafeQueue() {}

    bool empty() const {
        std::scoped_lock<std::mutex> sl(m);
        return q.empty();
    }

    std::size_t size() const {
        std::scoped_lock<std::mutex> sl(m);
        return q.size();
    }

    template <typename U> void enqueue(U &&t) {
        std::scoped_lock<std::mutex> sl(m);
        q.push(std::forward<U>(t));
    }

    std::optional<T> dequeue() {
        std::scoped_lock<std::mutex> sl(m);
        if (q.empty()) {
            return {};
        }
        T t = std::move(q.front());
        q.pop();
        return t;
    }

private:
    std::queue<T> q;
    mutable std::mutex m;
};

================================================
FILE: src/Common/ThreadPool/ThreadPool.h
================================================
#pragma once

#include "SafeQueue.h"

#include <vector>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <future>

#undef min
#undef max

class ThreadPool {
public:
    ThreadPool() : doStop(false) {
        int workerNums = std::max(1, static_cast<int>(std::thread::hardware_concurrency()) - 1);
        for (int i = 0; i < workerNums; i++) {
            vecth.push_back(std::thread(&ThreadPool::workLoop, this));
        }
    }

    ~ThreadPool() {
        {
            std::scoped_lock sl(m);
            doStop = true;
        }

        cv.notify_all();

        for (auto &th : vecth) {
            th.join();
        }
    }

    template <typename F, typename... Args>
    auto submit(F &&fn, Args &&...args) -> std::future<decltype(fn(args...))> {
        std::function<decltype(fn(args...))()> func = std::bind(std::forward<F>(fn), std::forward<Args>(args)...);

        auto taskPtr = std::make_shared<std::packaged_task<decltype(fn(args...))()>>(func);

        std::function<void()> wrapper = [taskPtr]() { (*taskPtr)(); };

        q.enqueue(std::move(wrapper));

        cv.notify_one();

        return taskPtr->get_future();
    }

private:
    std::vector<std::thread> vecth;
    bool doStop;

    SafeQueue<std::function<void()>> q;

    std::mutex m;
    std::condition_variable cv;

    void workLoop() {
        while (1) {
            std::unique_lock ul(m);
            while (!doStop && q.empty()) {
                cv.wait(ul);
            }

            if (doStop)
                return;

            auto t = q.dequeue();

            ul.unlock();

            if (!t.has_value())
                continue;

            auto fn = t.value();
            fn();
        }
    }
};

================================================
FILE: src/Common/TimeStamp.cpp
================================================
#define _CRT_SECURE_NO_WARNINGS
#include "TimeStamp.h"

#include <cassert>

using namespace std;

#define TICKS_PER_SECOND 10000000
#define EPOCH_DIFFERENCE 11644473600LL

// Windows时间从1601-01-01T00:00:00Z开始。离UNIX/Linux时间(1970-01-01T00:00:00Z)还有11644473600秒。Windows时间为100纳秒。
// 因此,从UNIX时间获得秒的函数如下所示
time_t convertWindowsTimeToUnixTime(long long input) {
    long long temp;
    temp = input / TICKS_PER_SECOND; // convert from 100ns intervals to seconds;
    temp = temp - EPOCH_DIFFERENCE;  // subtract number of seconds between epochs
    return (time_t)temp;
}

TimeStamp::TimeStamp() : tp(selected_clock::now()) {}

TimeStamp::TimeStamp(std::chrono::time_point<selected_clock> tp) : tp(tp) {}

TimeStamp::TimeStamp(time_t t) {
    tp = selected_clock::from_time_t(t);
    // assert(selected_clock::to_time_t(tp) == t);
}

TimeStamp::TimeStamp(FILETIME fileTime) {
    time_t t = convertWindowsTimeToUnixTime(*((long long *)&fileTime));
    tp = selected_clock::from_time_t(t);
}

bool TimeStamp::operator<(const TimeStamp &other) const {
    return tp.time_since_epoch().count() < other.tp.time_since_epoch().count();
}

bool TimeStamp::operator<=(const TimeStamp &other) const {
    return tp.time_since_epoch().count() <= other.tp.time_since_epoch().count();
}

bool TimeStamp::operator>(const TimeStamp &other) const {
    return tp.time_since_epoch().count() > other.tp.time_since_epoch().count();
}

bool TimeStamp::operator>=(const TimeStamp &other) const {
    return tp.time_since_epoch().count() >= other.tp.time_since_epoch().count();
}

TimeStamp TimeStamp::operator+(const std::chrono::milliseconds &dura) const { return tp + dura; }

TimeStamp::selected_clock::time_point TimeStamp::Raw() const { return tp; }

std::tstring TimeStamp::ToTString() const {
    const int bufSize = 64;
    char buf[bufSize];

    auto t = selected_clock::to_time_t(tp);
    tm tempTM;
    errno_t err = LOCALTIME_R(&tempTM, &t);
    strftime(buf, bufSize, "%Y-%m-%d %H:%M:%S", &tempTM);
    return to_tstring(buf);
}

TimeStamp TimeStamp::now() { return TimeStamp(); }

================================================
FILE: src/Common/TimeStamp.h
================================================
#pragma once

#include "tstring.h"

#include <chrono>

#ifdef WIN32
#define LOCALTIME_R(pTM, pTimeT) localtime_s(pTM, pTimeT)
#else
#define LOCALTIME_R(tm, ti) localtime_r(ti, tm)
#endif
// #define localtime static_assert("localtime is not thread-safe. considering LOCALTIME_R")

template <typename T>
class TimeDuration {
public:
    TimeDuration() {}

private:
    std::chrono::duration<T> d;
};

class TimeStamp {
public:
    using selected_clock = std::chrono::system_clock;

    TimeStamp();
    TimeStamp(std::chrono::time_point<selected_clock> tp);
    TimeStamp(time_t t);
    TimeStamp(FILETIME fileTime);
    bool operator<(const TimeStamp &other) const;
    bool operator<=(const TimeStamp &other) const;
    bool operator>(const TimeStamp &other) const;
    bool operator>=(const TimeStamp &other) const;
    TimeStamp operator+(const std::chrono::milliseconds &dura) const;

    selected_clock::time_point Raw() const;

    std::tstring ToTString() const;

    static TimeStamp now();

private:
    selected_clock::time_point tp;
};

================================================
FILE: src/Common/noncopyable.h
================================================
#pragma once

namespace Zhongmao {

class noncopyable {
public:
    noncopyable(const noncopyable &) = delete;
    void operator=(const noncopyable &) = delete;

protected:
    noncopyable() = default;
    ~noncopyable() = default;
};

} // namespace Zhongmao

================================================
FILE: src/Common/tstring.cpp
================================================
#include "tstring.h"

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <Windows.h>
#include <algorithm>
#include <iostream>
#include <memory>
#include <cassert>

using namespace std;

std::wstring string_to_wstring(const std::string &str) {
    LPCSTR pszSrc = str.c_str();
    int nLen = MultiByteToWideChar(CP_ACP, 0, pszSrc, -1, NULL, 0);
    if (nLen == 0)
        return std::wstring(L"");

    wchar_t *pwszDst = new wchar_t[nLen];
    if (!pwszDst)
        return std::wstring(L"");

    MultiByteToWideChar(CP_ACP, 0, pszSrc, -1, pwszDst, nLen);
    std::wstring wstr(pwszDst);
    delete[] pwszDst;
    pwszDst = NULL;

    return wstr;
}

void MyWideCharToMultiByte(const wchar_t *wsrc, int wsrcSize, std::unique_ptr<char[]> &dest, int &destSize,
                           UINT codePage) {
    // 取得大小
    destSize = WideCharToMultiByte(codePage, 0, wsrc, wsrcSize, NULL, 0, NULL, NULL);
    if (destSize == 0) // 大小为0或者失败,返回空串
    {
        dest.reset(nullptr);
        return;
    }

    // 分配空间
    dest.reset(new char[destSize]);

    // 进行转换
    WideCharToMultiByte(codePage, 0, wsrc, wsrcSize, dest.get(), destSize, NULL, NULL);
}

void MyMultiByteToWideChar(const char *src, int srcSize, std::unique_ptr<wchar_t[]> &dest, int &destSize,
                           UINT codePage) {
    // 取得大小
    destSize = MultiByteToWideChar(codePage, 0, src, srcSize, NULL, 0);
    if (destSize == 0) // 大小为0或者失败,返回空串
    {
        dest.reset(nullptr);
        return;
    }

    // 分配空间
    dest.reset(new wchar_t[destSize]);

    // 进行转换
    MultiByteToWideChar(codePage, 0, src, srcSize, dest.get(), destSize);
}

std::string wstring_to_string(const std::wstring &wstr) {
    // 取得大小
    int nLen = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, NULL, 0, NULL, NULL);
    if (nLen == 0) // 大小为0或者失败,返回空串
        return std::string("");

    // 分配空间
    unique_ptr<char[]> buf = unique_ptr<char[]>(new char[nLen]);

    // 进行转换
    nLen = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, buf.get(), nLen, NULL, NULL);
    if (nLen == 0) // 大小为0或者失败,返回空串
        return std::string("");

    return std::string(buf.get());
}

std::string to_string(const std::wstring &ws) {
    return wstring_to_string(ws);
}

std::wstring to_wstring(const std::string &s) {
    return string_to_wstring(s);
}

std::wstring to_wstring(const std::wstring &s) {
    return s;
}

std::string to_utf8(const std::wstring &wstr) {
    // 取得大小
    int nLen = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, NULL, 0, NULL, NULL);
    if (nLen == 0) // 大小为0或者失败,返回空串
        return std::string("");

    // 分配空间
    unique_ptr<char[]> buf = unique_ptr<char[]>(new char[nLen]);

    // 进行转换
    nLen = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, buf.get(), nLen, NULL, NULL);
    if (nLen == 0) // 大小为0或者失败,返回空串
        return std::string("");

    return std::string(buf.get());
}

std::string to_utf8(const std::u16string &wstr) {
#if WIN32
    const std::wstring &w = reinterpret_cast<const std::wstring &>(wstr);
    return to_utf8(w);
#endif
}

std::string ansi_to_utf8(const std::string &str) {
    int nwLen = MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);
    unique_ptr<wchar_t[]> pwBuf(new wchar_t[nwLen]);
    MultiByteToWideChar(CP_ACP, 0, str.c_str(), static_cast<int>(str.length()), pwBuf.get(), nwLen);

    int nLen = WideCharToMultiByte(CP_UTF8, 0, pwBuf.get(), -1, NULL, NULL, NULL, NULL);
    unique_ptr<char[]> pBuf(new char[nLen]);
    WideCharToMultiByte(CP_UTF8, 0, pwBuf.get(), nwLen, pBuf.get(), nLen, NULL, NULL);

    return string(pBuf.get());
}

std::vector<std::string> to_utf8(const std::vector<std::wstring> &wstrs) {
    std::vector<std::string> ret;
    for (const auto &wstr : wstrs) {
        ret.push_back(to_utf8(wstr));
    }
    return ret;
}

std::string utf8_to_string(const std::string &str) {
    int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);
    wchar_t *pwBuf = new wchar_t[nwLen + 1];
    memset(pwBuf, 0, nwLen * 2 + 2);
    MultiByteToWideChar(CP_UTF8, 0, str.c_str(), static_cast<int>(str.length()), pwBuf, nwLen);

    int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL);
    char *pBuf = new char[nLen + 1];
    memset(pBuf, 0, nLen + 1);
    WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);

    std::string ret = pBuf;
    delete[] pBuf;
    delete[] pwBuf;

    return ret;
}

std::wstring utf8_to_wstring(const std::string &str) {
    int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);
    std::wstring ret(nwLen - 1, L'\0'); // -1是为了排除掉上一步预计算时添加的尾后0的长度
    MultiByteToWideChar(CP_UTF8, 0, str.c_str(), static_cast<int>(str.size()), ret.data(), nwLen);

    return ret;
}

std::string to_hex(char c) noexcept {
    std::string ret;
    auto to_hex_in_16 = [](char n) noexcept -> char {
        if (!(n >= 0 && n <= 15)) {
            assert(0);
        }
        if (n >= 0 && n <= 9) {
            return n + '0';
        } else {
            return (n - 10) + 'A';
        }
    };
    ret += to_hex_in_16(static_cast<unsigned char>(c) >> 4); // high 4 bits
    ret += to_hex_in_16(c & 0b00001111);                     // low 4 bits
    return ret;
}

// 未测试
void FixEndLine(std::tstring &s) {
    tstring temp;
    tstring::size_type cur = 0;
    while (1) {
        auto lf = s.find_first_of(TEXT('\n'), cur);
        if (lf == tstring::npos) {
            temp += s.substr(cur);
            break;
        } else if (lf > cur && s[lf - 1] == TEXT('\r')) {
            temp += s.substr(cur, (lf + 1) - cur);
            cur = lf + 1;
        } else {
            temp += s.substr(cur, lf - cur);
            cur = lf + 1;
        }
    }
    s = temp;
}

std::string to_hex(const char *buf, int bufSize) {
    constexpr int len = 4;
    std::string hex;
    char temp[len];
    for (int i = 0; i < bufSize; ++i) {
        _snprintf_s(temp, len, "%02X ", (unsigned char)(buf[i]));
        hex += temp;
    }
    return hex;
}

std::string to_hex(std::string s) {
    constexpr int len = 4;
    std::string hex;
    char temp[len];
    for (char c : s) {
        _snprintf_s(temp, len, "%02X ", (unsigned char)c);
        hex += temp;
    }
    return hex;
}

std::wstring to_hex(std::wstring s) {
    std::wstring hex;
    wchar_t temp[5];
    for (auto c : s) {
        _snwprintf_s(temp, 5, 5, L"%04X", c);
        hex += temp;
    }
    return hex;
}

// https://stackoverflow.com/questions/6089231/getting-std-ifstream-to-handle-lf-cr-and-crlf
std::tistream &safeGetline(std::tistream &is, std::tstring &t) {
    t.clear();

    // The characters in the stream are read one-by-one using a std::streambuf.
    // That is faster than reading them one-by-one using the std::istream.
    // Code that uses streambuf this way must be guarded by a sentry object.
    // The sentry object performs various tasks,
    // such as thread synchronization and updating the stream state.

    std::tistream::sentry se(is, true);
    std::tstreambuf *sb = is.rdbuf();

    for (;;) {
        TCHAR c = sb->sbumpc();
        switch (c) {
        case TEXT('\n'):
            return is;
        case TEXT('\r'):
            if (sb->sgetc() == '\n')
                sb->sbumpc();
            return is;
        case std::tstreambuf::traits_type::eof():
            // Also handle the case when the last line has no line ending
            if (t.empty())
                is.setstate(std::tios::eofbit);
            return is;
        default:
            t += c;
        }
    }
}

std::vector<std::string_view> Split(std::string_view s, const std::string &dep) noexcept {
    std::vector<std::string_view> ans;
    string::size_type beg = 0;
    while (1) {
        // beg:  ""->npos " a"->1 "a"->0
        beg = s.find_first_not_of(dep);
        if (beg == string::npos) {
            // s == ""
            break;
        }
        s = s.substr(beg);

        // end:  "a "->1 "a"->npos
        auto end = s.find_first_of(dep);
        if (end == string::npos) {
            ans.push_back(s);
            break;
        }
        ans.push_back(s.substr(0, end));
        s = s.substr(end);
    }
    return ans;
}

================================================
FILE: src/Common/tstring.h
================================================
#pragma once
#include <string>

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h> //TEXT macro
#include <tchar.h>

#include <memory>
#include <vector>
#include <algorithm>

#ifdef _UNICODE

#define tstring wstring

#define tstring_view wstring_view

#define tios wios

#define tistream wistream

#define tostream wostream

#define tifstream wifstream

#define tofstream wofstream

#define tstringstream wstringstream

#define tistringstream wistringstream

#define tostringstream wostringstream

#define tstreambuf wstreambuf

#define tcout wcout

#define to_tstring to_wstring

#define to_tstring_from_utf8 utf8_to_wstring

#else

#define tstring string

#define tstring_view string_view

#define tios ios

#define tistream istream

#define tostream ostream

#define tifstream ifstream

#define tofstream ofstream

#define tstringstream stringstream

#define tistringstream istringstream

#define tostringstream ostringstream

#define tstreambuf streambuf

#define tcout cout

#define to_tstring to_string

#define to_tstring_from_utf8 utf8_to_string

#endif

void MyWideCharToMultiByte(const wchar_t *wsrc, int wsrcSize, std::unique_ptr<char[]> &dest, int &destSize,
                           UINT codePage = CP_ACP);
void MyMultiByteToWideChar(const char *src, int srcSize, std::unique_ptr<wchar_t[]> &dest, int &destSize,
                           UINT codePage = CP_ACP);

std::wstring string_to_wstring(const std::string &str);
std::string wstring_to_string(const std::wstring &wstr);

std::string to_string(const std::wstring &ws);

std::wstring to_wstring(const std::string &s);
std::wstring to_wstring(const std::wstring &s);

template <typename T>
std::enable_if_t<std::is_same_v<T, std::string> || std::is_same_v<T, std::wstring>, T> tolower(const T &s) noexcept {
    using C = T::value_type;
    T ret{s};
    std::for_each(ret.begin(), ret.end(), [](C &c) {
        c = tolower(c);
    });
    return ret;
}

std::string to_utf8(const std::wstring &wstr);
std::string to_utf8(const std::u16string &wstr);
std::string ansi_to_utf8(const std::string &str);
std::vector<std::string> to_utf8(const std::vector<std::wstring> &wstrs);

std::string utf8_to_string(const std::string &str);
std::wstring utf8_to_wstring(const std::string &str);

std::string to_hex(char c) noexcept;

std::string to_hex(const char *buf, int bufSize);
std::string to_hex(std::string s);
std::wstring to_hex(std::wstring s);

std::tistream &safeGetline(std::tistream &is, std::tstring &t);

/**
 * 切分字符串。
 * dep填入分隔符,可以支持多种分隔符。例如"\n\t"。
 */
std::vector<std::string_view> Split(std::string_view s, const std::string &dep) noexcept;


================================================
FILE: src/Control/CMakeLists.txt
================================================
# ==============================
file(GLOB_RECURSE SRC_CODE
	*.h
	*.cpp
	)

add_library(Control STATIC ${SRC_CODE})

# 添加include目录
target_include_directories(Control PUBLIC
	..
	${PROJECT_SOURCE_DIR}/third_party/WTL/include
)


================================================
FILE: src/Control/ControlStyle.h
================================================
#pragma once
#if defined _M_IX86
#pragma comment(                                                                                                       \
    linker,                                                                                                            \
    "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(                                                                                                       \
    linker,                                                                                                            \
    "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(                                                                                                       \
    linker,                                                                                                            \
    "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <Windows.h>
#include <CommCtrl.h>
#pragma comment(lib, "comctl32.lib")

// 高dpi支持(此法只能在Win7 SP1及以上系统调用,否则报错找不到dll)
//#include <ShellScalingAPI.h>
//#pragma comment(lib,"Shcore.lib")

#ifndef DPI_ENUMS_DECLARED

typedef enum PROCESS_DPI_AWARENESS {
    PROCESS_DPI_UNAWARE = 0,
    PROCESS_SYSTEM_DPI_AWARE = 1,
    PROCESS_PER_MONITOR_DPI_AWARE = 2
} PROCESS_DPI_AWARENESS;

typedef enum MONITOR_DPI_TYPE {
    MDT_EFFECTIVE_DPI = 0,
    MDT_ANGULAR_DPI = 1,
    MDT_RAW_DPI = 2,
    MDT_DEFAULT = MDT_EFFECTIVE_DPI
} MONITOR_DPI_TYPE;

#define DPI_ENUMS_DECLARED
#endif

// 启用高DPI适配。若在Win7 SP1以下系统,找不到函数时,则不做处理
inline void SupportHighDPI() {
    HMODULE hHighDpi = LoadLibrary(TEXT("SHCore.dll"));
    if (hHighDpi) {
        typedef HRESULT(__stdcall * FuncSetHighDpi)(PROCESS_DPI_AWARENESS);
        FuncSetHighDpi fnSetHighDpi = (FuncSetHighDpi)GetProcAddress(hHighDpi, "SetProcessDpiAwareness");
        if (fnSetHighDpi) {
            fnSetHighDpi(PROCESS_PER_MONITOR_DPI_AWARE);
        }
        FreeLibrary(hHighDpi);
    }
}

================================================
FILE: src/Control/TListView.cpp
================================================
#include "TListView.h"

#include <stdexcept>
#include <cassert>

using namespace std;

std::vector<int> TListView::GetSelectedItems() const {
    std::vector<int> ans;
    int iPos = -1;
    while (1) {
        // Get the next selected item
        iPos = GetNextItem(iPos, LVNI_SELECTED);
        if (iPos == -1)
            break;

        ans.push_back(iPos);
    }
    return ans;
}

std::tstring TListView::GetItemText(int nItem, int nSubItem) const {
    assert(::IsWindow(this->m_hWnd));

    tstring ans;
    LVITEM lvi = {};
    lvi.iSubItem = nSubItem;

    for (int nLen = 256;; nLen *= 2) {
        ans.resize(nLen);

        lvi.cchTextMax = nLen;
        lvi.pszText = ans.data();
        int nRes = (int)::SendMessage(this->m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)&lvi);
        if (nRes < nLen - 1) {
            ans.resize(nRes);
            break;
        }
    }

    return ans;
}

void TListView::SetColumnText(int col, const std::tstring &s) noexcept {
    std::tstring buf(s);
    buf.push_back(TEXT('\0'));
    LVCOLUMN lvColumn;
    lvColumn.mask = LVCF_TEXT;
    lvColumn.iSubItem = col;
    lvColumn.pszText = buf.data();
    SetColumn(col, &lvColumn);
}


================================================
FILE: src/Control/TListView.h
================================================
#pragma once

#include <Common/tstring.h>

#include <atlbase.h> // 基本的ATL类
#include <atlwin.h>  // ATL窗口类
#include <atlapp.h>  // WTL 主框架窗口类
#include <atlctrls.h>
#include <atlcrack.h> // WTL 增强的消息宏

#include <vector>

class TListView : public CWindowImpl<TListView, CListViewCtrl> {
public:
    BEGIN_MSG_MAP_EX(TListView)
    MESSAGE_HANDLER(WM_DROPFILES, OnDropFiles)
    END_MSG_MAP()

    void SetColumnText(int col, const std::tstring &s) noexcept;

    std::vector<int> GetSelectedItems() const;

    std::tstring GetItemText(int nItem, int nSubItem) const;

    LRESULT OnDropFiles(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled) {
        SendMessage(GetParent(), uMsg, wParam, lParam);
        return 0;
    }
};

================================================
FILE: src/Control/TMenu.cpp
================================================
#include "TMenu.h"

#include <cassert>

TMenu::TMenu() noexcept {
    hMenu = CreateMenu();
}

void TMenu::SetItemEnable(int itemId, bool enabled) noexcept {
    int lastStatus = EnableMenuItem(hMenu, itemId, enabled ? MF_ENABLED : MF_DISABLED);
    assert(lastStatus >= 0);
}

TMenu &TMenu::SetItemToBeContainer(int itemId) noexcept {
    assert(children.find(itemId) == children.end());

    TMenu child;

    MENUITEMINFO menuItemInfo = {0};
    menuItemInfo.cbSize = sizeof(MENUITEMINFO);
    menuItemInfo.fMask = MIIM_SUBMENU;
    menuItemInfo.hSubMenu = child.hMenu;

    BOOL ok = SetMenuItemInfo(hMenu, itemId, FALSE, &menuItemInfo);
    assert(ok);

    children.insert({itemId, child});
    return children[itemId];
}

void TMenu::AppendItem(int id, const std::wstring &s) noexcept {
    BOOL ok = AppendMenu(hMenu, MF_STRING, id, s.c_str());
    assert(ok);
}

void TMenu::InsertItem(int posId, int newItemid, const std::wstring &s) noexcept {
    HMENU hMenuPopup = CreateMenu();

    MENUITEMINFO menuItemInfo = {0};
    menuItemInfo.cbSize = sizeof(MENUITEMINFO);
    menuItemInfo.wID = newItemid;
    menuItemInfo.fMask = MIIM_ID | MIIM_STRING | MIIM_SUBMENU;
    menuItemInfo.cch = static_cast<UINT>(s.length() + 1);
    menuItemInfo.dwTypeData = const_cast<wchar_t *>(s.c_str());
    menuItemInfo.hSubMenu = hMenu;

    BOOL ok = InsertMenuItem(hMenu, posId, FALSE, &menuItemInfo);
    assert(ok);
}

std::wstring TMenu::GetItemTextByPosition(int pos) noexcept {
    return GetItemTextByPositionOrId(true, pos);
}

std::wstring TMenu::GetItemTextById(int id) noexcept {
    return GetItemTextByPositionOrId(false, id);
}

void TMenu::SetItemTextByPosition(int pos, const std::wstring &s) noexcept {
    SetItemTextByPositionOrId(true, pos, s);
}

void TMenu::SetItemTextById(int id, const std::wstring &s) noexcept {
    SetItemTextByPositionOrId(false, id, s);
}

void TMenu::SetItemTextByPositionOrId(bool byPosition, int posOrId, const std::wstring &s) noexcept {
    std::wstring ws(s);
    ws.push_back(L'\0');

    MENUITEMINFO menuItemInfo = {0};

    menuItemInfo.cbSize = sizeof(MENUITEMINFO);
    menuItemInfo.fMask = MIIM_STRING;
    menuItemInfo.cch = static_cast<UINT>(ws.size());
    menuItemInfo.dwTypeData = const_cast<wchar_t *>(ws.data());
    BOOL ok = SetMenuItemInfo(hMenu, posOrId, byPosition, &menuItemInfo);
    assert(ok);
}

TMenu &TMenu::GetChild(int itemId) {
    return children.at(itemId);
}

std::wstring TMenu::GetItemTextByPositionOrId(bool byPosition, int posOrId) noexcept {
    MENUITEMINFO menuItemInfo = {0};

    // 第一次,先拿到cch,即文本长度
    menuItemInfo.cbSize = sizeof(MENUITEMINFO);
    menuItemInfo.fMask = MIIM_STRING;
    BOOL ok = GetMenuItemInfo(hMenu, posOrId, byPosition, &menuItemInfo);
    assert(ok);

    // 增加长度,以容纳尾后0
    menuItemInfo.cch++;
    std::wstring ws(menuItemInfo.cch, L'\0');

    // 把字符串指针指向ws,让系统往ws里写内容
    menuItemInfo.dwTypeData = const_cast<wchar_t *>(ws.data());
    ok = GetMenuItemInfo(hMenu, posOrId, byPosition, &menuItemInfo);
    assert(ok);
    return ws;
}

TPopupMenu::TPopupMenu(int menuId) noexcept {
    hRoot = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(menuId));
    assert(hRoot);
    hMenu = GetSubMenu(hRoot, 0);
    assert(hMenu);
}

void TPopupMenu::Popup(HWND hParent) noexcept {
    POINT pt;
    GetCursorPos(&pt);

    BOOL ok = TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hParent, NULL);
    assert(ok);
}

================================================
FILE: src/Control/TMenu.h
================================================
#pragma once

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <Windows.h>

#include <string>
#include <map>

class TMenu {
public:
    TMenu() noexcept;
    virtual ~TMenu() = default;

    void SetItemEnable(int itemId, bool enabled = true) noexcept;

    TMenu &SetItemToBeContainer(int itemId) noexcept;

    void AppendItem(int id, const std::wstring &s) noexcept;

    void InsertItem(int posId, int newItemid, const std::wstring &s) noexcept;

    std::wstring GetItemTextByPosition(int pos) noexcept;
    std::wstring GetItemTextById(int id) noexcept;

    void SetItemTextByPosition(int pos, const std::wstring &s) noexcept;
    void SetItemTextById(int id, const std::wstring &s) noexcept;

    TMenu &GetChild(int itemId);

protected:
    HMENU hMenu;
    std::map<int, TMenu> children;

    std::wstring GetItemTextByPositionOrId(bool byPosition, int posOrId) noexcept;

    void SetItemTextByPositionOrId(bool byPosition, int posOrId, const std::wstring &s) noexcept;
};

class TPopupMenu : public TMenu {
public:
    TPopupMenu(int menuId) noexcept;

    void Popup(HWND hParent) noexcept;

private:
    HMENU hRoot;
};

================================================
FILE: src/Core/CMakeLists.txt
================================================
# =============================================
find_package(nlohmann_json CONFIG REQUIRED)

# 添加icu库
find_package(ICU REQUIRED
	COMPONENTS uc dt in io data
)

find_package(fmt CONFIG REQUIRED)

# === Core ====================================
file(GLOB CORE_CODE
	*.h
	*.cpp
)

add_library(Core STATIC ${CORE_CODE})

target_include_directories(Core PRIVATE
	${PROJECT_SOURCE_DIR}/third_party/uchardet/uchardet/src
)

target_link_libraries(Core PUBLIC
	Common
	nlohmann_json::nlohmann_json
	libuchardet_static
	ICU::uc
	ICU::in
	ICU::data
	ced
	fmt::fmt
) # 添加include目录
target_include_directories(Core PUBLIC
	..
)


================================================
FILE: src/Core/CharsetCode.cpp
================================================
#include "CharsetCode.h"

// standard
#include <stdexcept>

struct MyCharset {
    std::string viewName; // the name shown on interface
    std::string icuName;  // the name used by icu
    std::unordered_set<std::string>
        icuNames; // if icu detected these charset names, map all of them to be the main charset
    ConvertEngine convertEngine;
};

// 字符集code到名称的映射表
const std::unordered_map<CharsetCode, MyCharset> charsetCodeMap = {
    // CharsetCode枚举值, viewName显示名称, icuName, 可能的别名
    {CharsetCode::UNKNOWN, MyCharset{u8"Unknown", "-", {}, ConvertEngine::ICU}},
    {CharsetCode::EMPTY, MyCharset{u8"-", "-", {}, ConvertEngine::ICU}},
    {CharsetCode::NOT_SUPPORTED, MyCharset{u8"Not Supported", "-", {}, ConvertEngine::ICU}},
    {CharsetCode::UTF8, MyCharset{u8"UTF-8", "UTF-8", {"ASCII", "ANSI", "UTF8"}, ConvertEngine::ICU}},
    {CharsetCode::UTF8BOM, MyCharset{u8"UTF-8 BOM", "UTF-8", {}, ConvertEngine::ICU}},
    {CharsetCode::GB18030, MyCharset{u8"GB18030", "GB18030", {"GB"}, ConvertEngine::ICU}},

    {CharsetCode::UTF16LE, MyCharset{u8"UTF-16LE", "UTF-16LE", {}, ConvertEngine::ICU}},
    {CharsetCode::UTF16LEBOM, MyCharset{u8"UTF-16LE BOM", "UTF-16LE", {"utf-16"}, ConvertEngine::ICU}},
    {CharsetCode::UTF16BE, MyCharset{u8"UTF-16BE", "UTF-16BE", {}, ConvertEngine::ICU}},
    {CharsetCode::UTF16BEBOM, MyCharset{u8"UTF-16BE BOM", "UTF-16BE", {}, ConvertEngine::ICU}},
    {CharsetCode::UTF32LE, MyCharset{u8"UTF-32LE", "UTF-32LE", {}, ConvertEngine::ICU}},
    {CharsetCode::UTF32LEBOM, MyCharset{u8"UTF-32LE BOM", "UTF-32LE", {"utf-32"}, ConvertEngine::ICU}},
    {CharsetCode::UTF32BE, MyCharset{u8"UTF-32BE", "UTF-32BE", {}, ConvertEngine::ICU}},
    {CharsetCode::UTF32BEBOM, MyCharset{u8"UTF-32BE BOM", "UTF-32BE", {}, ConvertEngine::ICU}},
    {CharsetCode::BIG5, MyCharset{u8"BIG5", "Big5", {"Big5"}, ConvertEngine::ICU}},
    {CharsetCode::SHIFT_JIS, MyCharset{u8"SHIFT-JIS", "SHIFT-JIS", {"SHIFT_JIS"}, ConvertEngine::ICU}},

    {CharsetCode::EUC_JP, MyCharset{u8"EUC-JP", "EUC-JP", {"EUC-JP"}, ConvertEngine::ICU}},
    {CharsetCode::EUC_TW, MyCharset{u8"EUC-TW", "EUC-TW", {"EUC-TW"}, ConvertEngine::ICU}},

    {CharsetCode::WINDOWS_1250, MyCharset{u8"WINDOWS-1250", "WINDOWS-1250", {}, ConvertEngine::ICU}},
    {CharsetCode::WINDOWS_1251, MyCharset{u8"WINDOWS-1251", "WINDOWS-1251", {}, ConvertEngine::ICU}},
    {CharsetCode::WINDOWS_1252, MyCharset{u8"WINDOWS-1252", "WINDOWS-1252", {}, ConvertEngine::ICU}},
    {CharsetCode::WINDOWS_1253, MyCharset{u8"WINDOWS-1253", "WINDOWS-1253", {}, ConvertEngine::ICU}},
    {CharsetCode::WINDOWS_1254, MyCharset{u8"WINDOWS-1254", "WINDOWS-1254", {}, ConvertEngine::ICU}},
    {CharsetCode::WINDOWS_1255, MyCharset{u8"WINDOWS-1255", "WINDOWS-1255", {}, ConvertEngine::ICU}},
    {CharsetCode::WINDOWS_1256, MyCharset{u8"WINDOWS-1256", "WINDOWS-1256", {}, ConvertEngine::ICU}},
    {CharsetCode::WINDOWS_1257, MyCharset{u8"WINDOWS-1257", "WINDOWS-1257", {}, ConvertEngine::ICU}},
    {CharsetCode::WINDOWS_1258, MyCharset{u8"WINDOWS-1258", "WINDOWS-1258", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_1, MyCharset{u8"ISO-8859-1", "ISO-8859-1", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_2, MyCharset{u8"ISO-8859-2", "ISO-8859-2", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_3, MyCharset{u8"ISO-8859-3", "ISO-8859-3", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_4, MyCharset{u8"ISO-8859-4", "ISO-8859-4", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_5, MyCharset{u8"ISO-8859-5", "ISO-8859-5", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_6, MyCharset{u8"ISO-8859-6", "ISO-8859-6", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_7, MyCharset{u8"ISO-8859-7", "ISO-8859-7", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_8, MyCharset{u8"ISO-8859-8", "ISO-8859-8", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_9, MyCharset{u8"ISO-8859-9", "ISO-8859-9", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_10, MyCharset{u8"ISO-8859-10", "ISO-8859-10", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_11, MyCharset{u8"ISO-8859-11", "ISO-8859-11", {}, ConvertEngine::ICU}},
    //{CharsetCode::ISO_8859_12, MyCharset{u8"ISO-8859-12", "ISO-8859-12", {}, ConvertEngine::ICU}},   // no this
    // charset due to history reason
    {CharsetCode::ISO_8859_13, MyCharset{u8"ISO-8859-13", "ISO-8859-13", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_14, MyCharset{u8"ISO-8859-14", "ISO-8859-14", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_15, MyCharset{u8"ISO-8859-15", "ISO-8859-15", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_8859_16, MyCharset{u8"ISO-8859-16", "ISO-8859-16", {"latin-10"}, ConvertEngine::NO_ENGINE}},
    {CharsetCode::ISO_2022_JP, MyCharset{u8"ISO-2022-jp", "ISO-2022-jp", {}, ConvertEngine::ICU}},
    {CharsetCode::ISO_2022_KR, MyCharset{u8"ISO-2022-kr", "ISO-2022-kr", {}, ConvertEngine::ICU}},

    {CharsetCode::IBM852, MyCharset{u8"ibm852", "ibm852", {}, ConvertEngine::ICU}},
    {CharsetCode::IBM855, MyCharset{u8"ibm855", "ibm855", {}, ConvertEngine::ICU}},
    {CharsetCode::IBM865, MyCharset{u8"ibm865", "ibm865", {}, ConvertEngine::ICU}},
    {CharsetCode::IBM862_LOGICAL, MyCharset{u8"ibm862.logical", "ibm862.logical", {}, ConvertEngine::NO_ENGINE}},
    {CharsetCode::IBM862_VISUAL, MyCharset{u8"ibm862.visual", "ibm862.visual", {}, ConvertEngine::NO_ENGINE}},
    {CharsetCode::IBM866, MyCharset{u8"ibm866", "ibm866", {}, ConvertEngine::ICU}},

    {CharsetCode::CP737, MyCharset{u8"CP737", "CP737", {}, ConvertEngine::ICU}},

    {CharsetCode::MAC_CENTRALEUROPE, MyCharset{u8"Central Europe(Mac)", "mac-centraleurope", {}, ConvertEngine::ICU}},
    {CharsetCode::MAC_CYRILLIC, MyCharset{u8"Mac Cyrillic", "mac-cyrillic", {}, ConvertEngine::ICU}},

    {CharsetCode::VNI, MyCharset{u8"VNI", "", {}, ConvertEngine::SELF_VIETNAMESE_CONVERTER}},
    {CharsetCode::VPS, MyCharset{u8"VPS", "", {}, ConvertEngine::SELF_VIETNAMESE_CONVERTER}},
    {CharsetCode::VISCII, MyCharset{u8"VISCII", "", {}, ConvertEngine::SELF_VIETNAMESE_CONVERTER}},
    {CharsetCode::TCVN3, MyCharset{u8"TCVN3", "", {}, ConvertEngine::SELF_VIETNAMESE_CONVERTER}},

    {CharsetCode::GEORGIAN_ACADEMY, MyCharset{u8"georgian-academy", "georgian-academy", {}, ConvertEngine::NO_ENGINE}},
    {CharsetCode::GEORGIAN_PS, MyCharset{u8"georgian-ps", "georgian-ps", {}, ConvertEngine::NO_ENGINE}},
    {CharsetCode::JOHAB, MyCharset{u8"JOHAB", "JOHAB", {}, ConvertEngine::NO_ENGINE}},
    {CharsetCode::UHC, MyCharset{u8"UHC", "UHC", {}, ConvertEngine::NO_ENGINE}},
    {CharsetCode::KOI8_R, MyCharset{u8"koi8-r", "koi8-r", {}, ConvertEngine::NO_ENGINE}},
    {CharsetCode::TIS_620, MyCharset{u8"tis-620", "tis-620", {}, ConvertEngine::NO_ENGINE}},
};

std::string ToViewCharsetName(CharsetCode code) noexcept {
    return charsetCodeMap.at(code).viewName;
}

CharsetCode ToCharsetCode(const std::string &name) {
    // 查找name是否有吻合的viewName
    auto it =
        std::find_if(charsetCodeMap.begin(), charsetCodeMap.end(), [&](const std::pair<CharsetCode, MyCharset> &pr) {
            return tolower(pr.second.viewName) == tolower(name);
        });
    if (it != charsetCodeMap.end()) {
        return it->first;
    }

    // 查找name是否有吻合的icuName
    it = std::find_if(charsetCodeMap.begin(), charsetCodeMap.end(), [&](const std::pair<CharsetCode, MyCharset> &pr) {
        return tolower(pr.second.icuName) == tolower(name);
    });
    if (it != charsetCodeMap.end()) {
        return it->first;
    }

    // 查找name是否有吻合的icuNames
    for (auto &pr : charsetCodeMap) {
        for (auto &icuName : pr.second.icuNames) {
            if (tolower(icuName) == tolower(name)) {
                return pr.first;
            }
        }
    }
    throw std::runtime_error("unsupported: " + name);
}

std::string ToICUCharsetName(CharsetCode code) noexcept {
    return charsetCodeMap.at(code).icuName;
}

bool HasBom(CharsetCode code) {
    switch (code) {
    case CharsetCode::UTF8BOM:
    case CharsetCode::UTF16LEBOM:
    case CharsetCode::UTF16BEBOM:
        return true;
    }
    return false;
}

const char *GetBomData(CharsetCode code) {
    switch (code) {
    case CharsetCode::UTF8BOM:
        return UTF8BOM_DATA;
    case CharsetCode::UTF16LEBOM:
        return UTF16LEBOM_DATA;
    case CharsetCode::UTF16BEBOM:
        return UTF16BEBOM_DATA;
    }
    return nullptr;
}

int BomSize(CharsetCode code) {
    switch (code) {
    case CharsetCode::UTF8BOM:
        return sizeof(UTF8BOM_DATA);
    case CharsetCode::UTF16LEBOM:
        return sizeof(UTF16LEBOM_DATA);
    case CharsetCode::UTF16BEBOM:
        return sizeof(UTF16BEBOM_DATA);
    }
    return 0;
}

CharsetCode CheckBom(char *buf, int bufSize) {
    if (bufSize >= sizeof(UTF8BOM_DATA) && memcmp(buf, UTF8BOM_DATA, sizeof(UTF8BOM_DATA)) == 0) {
        return CharsetCode::UTF8BOM;
    }
    if (bufSize >= sizeof(UTF16LEBOM_DATA) && memcmp(buf, UTF16LEBOM_DATA, sizeof(UTF16LEBOM_DATA)) == 0) {
        return CharsetCode::UTF8BOM;
    }
    if (bufSize >= sizeof(UTF16BEBOM_DATA) && memcmp(buf, UTF16BEBOM_DATA, sizeof(UTF16BEBOM_DATA)) == 0) {
        return CharsetCode::UTF8BOM;
    }
    if (bufSize >= sizeof(UTF32LEBOM_DATA) && memcmp(buf, UTF32LEBOM_DATA, sizeof(UTF32LEBOM_DATA)) == 0) {
        return CharsetCode::UTF8BOM;
    }
    if (bufSize >= sizeof(UTF32BEBOM_DATA) && memcmp(buf, UTF32BEBOM_DATA, sizeof(UTF32BEBOM_DATA)) == 0) {
        return CharsetCode::UTF8BOM;
    }
    return CharsetCode::UNKNOWN;
}

ConvertEngine GetConvertEngine(CharsetCode code) noexcept {
    return charsetCodeMap.at(code).convertEngine;
}


================================================
FILE: src/Core/CharsetCode.h
================================================
#pragma once

#include <Common/tstring.h>

// standard lib
#include <unordered_set>
#include <unordered_map>

enum class CharsetCode {
    UNKNOWN,
    EMPTY,
    NOT_SUPPORTED,

    //
    UTF8, // this line's order should not be changed. see DialogMain.cpp line 142: for (int icode =
          // static_cast<int>(CharsetCode::UTF8), i = 0;
    UTF8BOM,

    UTF16BE,
    UTF16BEBOM,
    UTF16LE,
    UTF16LEBOM,
    UTF32BE,
    UTF32BEBOM,
    UTF32LE,
    UTF32LEBOM,

    GB18030,
    BIG5,
    SHIFT_JIS,

    EUC_JP,
    EUC_TW,

    WINDOWS_1250,
    WINDOWS_1251,
    WINDOWS_1252,
    WINDOWS_1253,
    WINDOWS_1254,
    WINDOWS_1255,
    WINDOWS_1256,
    WINDOWS_1257,
    WINDOWS_1258, // Vietnamese
    ISO_8859_1,
    ISO_8859_2,
    ISO_8859_3,
    ISO_8859_4,
    ISO_8859_5,
    ISO_8859_6,
    ISO_8859_7,
    ISO_8859_8,
    ISO_8859_9,
    ISO_8859_10,
    ISO_8859_11,
    // ISO_8859_12,  // no this charset due to history reason
    ISO_8859_13,
    ISO_8859_14,
    ISO_8859_15,
    ISO_8859_16,
    ISO_2022_JP,
    ISO_2022_KR,

    IBM852,
    IBM855,
    IBM865,
    IBM862_LOGICAL,
    IBM862_VISUAL,
    IBM866,

    CP737,

    MAC_CENTRALEUROPE,
    MAC_CYRILLIC,

    VNI,    // Vietnamese
    VPS,    // Vietnamese
    VISCII, // Vietnamese
    TCVN3,  // Vietnamese

    GEORGIAN_ACADEMY,
    GEORGIAN_PS,
    JOHAB,
    UHC,
    KOI8_R,
    TIS_620,

    CHARSET_CODE_END

    // 添加字符集需要同步修改:charsetCodeMap
};

enum class ConvertEngine {
    ICU,
    SELF_VIETNAMESE_CONVERTER,
    NO_ENGINE,

    END,
};

std::string ToViewCharsetName(CharsetCode code) noexcept;

/**
 * 编码集名字转CharsetCode
 * @exception runtime_error 未识别的字符串
 */
//
CharsetCode ToCharsetCode(const std::string &name);

std::string ToICUCharsetName(CharsetCode code) noexcept;

// bom串
const char UTF8BOM_DATA[] = {'\xEF', '\xBB', '\xBF'};
const char UTF16LEBOM_DATA[] = {'\xFF', '\xFE'};
const char UTF16BEBOM_DATA[] = {'\xFE', '\xFF'};
const char UTF32LEBOM_DATA[] = {'\xFF', '\xFE', '\x0', '\x0'};
const char UTF32BEBOM_DATA[] = {'\xFE', '\xFF', '\x0', '\x0'};

bool HasBom(CharsetCode code);
const char *GetBomData(CharsetCode code);
int BomSize(CharsetCode code);

/**
 * @brief 返回buf的开头是否符合某种BOM,如果都不符合返回UNKNOWN
 */
CharsetCode CheckBom(char *buf, int bufSize);

ConvertEngine GetConvertEngine(CharsetCode code) noexcept;


================================================
FILE: src/Core/Config.cpp
================================================
#include "Config.h"

std::unordered_set<CharsetCode> Configuration::normalCharset = {CharsetCode::UTF8, CharsetCode::UTF8BOM,
                                                                CharsetCode::GB18030};


================================================
FILE: src/Core/Config.h
================================================
#pragma once

// self
#include "CharsetCode.h"
#include "LineBreaks.h"

#include <Common/tstring.h>

// third party
#include <nlohmann/json.hpp>

// standard lib
#include <unordered_set>

/**
 * @brief 配置信息
 */
struct Configuration {
    enum class FilterMode : int { NO_FILTER, SMART, ONLY_SOME_EXTANT };
    enum class OutputTarget { ORIGIN, TO_DIR };
    static std::unordered_set<CharsetCode> normalCharset;

    FilterMode filterMode;
    OutputTarget outputTarget;
    std::string includeRule = u8"h hpp c cpp cxx txt";
    std::string excludeRule;
    std::string outputDir;
    CharsetCode outputCharset;
    bool enableConvertLineBreaks;
    LineBreaks lineBreak;
    std::string language;
    // if member variables is added, it must be synchronized at NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE below.

    Configuration()
        : filterMode(FilterMode::SMART), outputTarget(OutputTarget::ORIGIN), outputCharset(CharsetCode::UTF8),
          lineBreak(LineBreaks::CRLF), enableConvertLineBreaks(false) {}

    static bool IsNormalCharset(CharsetCode charset) {
        return normalCharset.find(charset) != normalCharset.end();
    }
};

NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Configuration, filterMode, outputTarget, includeRule, excludeRule, outputDir,
                                   outputCharset, enableConvertLineBreaks, lineBreak, language)

================================================
FILE: src/Core/Core.cpp
================================================
#include "Core.h"

#include "Detect.h"
#include "UCNVHelper.h"
#include "Exceptions.h"

#include <Common/FileFunction.h>

#include <unicode/ucnv.h>
#include <unicode/ucsdet.h>
#include <compact_enc_det/compact_enc_det.h>

#include <stdexcept>
#include <algorithm>
#include <iostream>

using namespace std;

constexpr uint64_t tryReadSize = 100Ui64 * KB;

constexpr uint64_t MAX_STRING_PIECE_LENGTH = 64;

std::u16string Decode(std::string_view src, CharsetCode code) {
    if (code == CharsetCode::EMPTY) {
        return {};
    }

    switch (GetConvertEngine(code)) {
    case ConvertEngine::SELF_VIETNAMESE_CONVERTER: {
        viet::Init();
        return viet::ConvertToUtf16LE(src, CharsetCodeToVietEncoding(code));
    }
    case ConvertEngine::ICU: {
        // 从code转换到icu的字符集名称
        auto icuCharsetName = ToICUCharsetName(code);

        UErrorCode err = U_ZERO_ERROR;

        // 打开转换器
        unique_ptr<UConverter, function<void(UConverter *)>> conv(ucnv_open(icuCharsetName.c_str(), &err),
                                                                  [](UConverter *p) {
                                                                      ucnv_close(p);
                                                                  });
        DealWithUCNVError(err);

        std::size_t cap = src.size() + 1;
        std::u16string target(cap, u'\u0000');

        ucnv_setToUCallBack(conv.get(), UCNV_TO_U_CALLBACK_STOP, NULL, NULL, NULL, &err);
        DealWithUCNVError(err);

        if (cap > std::numeric_limits<uint32_t>::max()) {
            throw MyRuntimeError(MessageId::STRING_LENGTH_OUT_OF_LIMIT);
        }

        if (src.size() > std::numeric_limits<uint32_t>::max()) {
            throw MyRuntimeError(MessageId::STRING_LENGTH_OUT_OF_LIMIT);
        }

        // 解码
        int retLen = ucnv_toUChars(conv.get(), target.data(), static_cast<uint32_t>(cap), src.data(),
                                   static_cast<uint32_t>(src.size()), &err);
        target.resize(retLen);

        int corruptedDataPieceSize = static_cast<int>(std::min(32ull, src.size() - retLen));
        // if there is corrupted data at src.data(), err will be U_ILLEGAL_CHAR_FOUND(12).
        // TODO: at this case, maybe prompt user to decide how to deal with.
        // current we just throw a clear error message.
        if (err == U_ILLEGAL_CHAR_FOUND) {
            throw IllegalCharFoundError(code, retLen, std::string(src.substr(retLen, corruptedDataPieceSize)));
        }
        if (err == U_INVALID_CHAR_FOUND) {
            throw InvalidCharFoundError(code, retLen, std::string(src.substr(retLen, corruptedDataPieceSize)));
        }

        DealWithUCNVError(err);

        return target;
    }
    case ConvertEngine::NO_ENGINE:
        throw 
Download .txt
gitextract_dzo0glnd/

├── .clang-format
├── .github/
│   └── workflows/
│       └── cmake-single-platform.yml
├── .gitignore
├── CMakeLists.txt
├── CMakePresets.json
├── README-en.md
├── README.md
├── config_on_win.bat
├── sample/
│   ├── expect_pass/
│   │   ├── [EUC-JP]readme.txt
│   │   ├── [Unknown]ubuntu-22.04.2-desktop-amd64.iso.torrent
│   │   ├── [gb18030]你还戴着这副眼镜.txt
│   │   ├── [utf-16].txt
│   │   ├── [utf-16be].txt
│   │   ├── [utf-16le].txt
│   │   └── [utf-8].txt
│   ├── not_pass_yet/
│   │   ├── [GB18030]DialogAnimation.h
│   │   ├── [GB18030]LogRecord.h
│   │   ├── [GB18030]TBarTool_GB.cpp
│   │   ├── [GB18030]TDraw.h
│   │   ├── [GB18030]TMenu.cpp
│   │   ├── [GB18030]一个字.txt
│   │   ├── [GB18030]澤野弘之.lrc
│   │   ├── [GB18030]编译说明.txt
│   │   ├── [GB18030]连杆.cpp
│   │   ├── [UTF-8]CMakeLists.txt
│   │   ├── [UTF-8]TBarTool.cpp
│   │   └── [UTF-8]虚拟机环境.txt
│   ├── tcvn/
│   │   ├── demo1-tcvn.txt
│   │   ├── demo1-utf16le.txt
│   │   └── demo1-utf8.txt
│   └── uchardet_test_samples/
│       ├── ar/
│       │   ├── iso-8859-6.txt
│       │   ├── utf-8.txt
│       │   └── windows-1256.txt
│       ├── be/
│       │   ├── iso-8859-5.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── bg/
│       │   ├── iso-8859-5.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── ca/
│       │   ├── iso-8859-1.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── cs/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── da/
│       │   ├── ibm865.txt
│       │   ├── iso-8859-1.txt
│       │   ├── iso-8859-15.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── de/
│       │   ├── iso-8859-1.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── el/
│       │   ├── cp737.txt
│       │   ├── iso-8859-7.txt
│       │   ├── utf-8.txt
│       │   └── windows-1253.txt
│       ├── en/
│       │   ├── ascii.txt
│       │   └── utf-8.txt
│       ├── eo/
│       │   ├── iso-8859-3.txt
│       │   └── utf-8.txt
│       ├── es/
│       │   ├── iso-8859-1.txt
│       │   ├── iso-8859-15.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── et/
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-15.txt
│       │   ├── iso-8859-4.txt
│       │   ├── utf-8.txt
│       │   ├── windows-1252.txt
│       │   └── windows-1257.txt
│       ├── fi/
│       │   ├── iso-8859-1.txt
│       │   └── utf-8.txt
│       ├── fr/
│       │   ├── iso-8859-1.txt
│       │   ├── iso-8859-15.txt
│       │   ├── utf-16.be
│       │   ├── utf-32.le
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── ga/
│       │   ├── iso-8859-1.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── he/
│       │   ├── ibm862.logical.txt
│       │   ├── ibm862.visual.txt
│       │   ├── iso-8859-8.txt
│       │   ├── utf-8.txt
│       │   └── windows-1255.txt
│       ├── hi/
│       │   └── utf-8.txt
│       ├── hr/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-16.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── hu/
│       │   ├── iso-8859-2.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── it/
│       │   ├── iso-8859-1.txt
│       │   └── utf-8.txt
│       ├── ja/
│       │   ├── euc-jp.txt
│       │   ├── iso-2022-jp.txt
│       │   ├── shift_jis.txt
│       │   ├── utf-16be.txt
│       │   ├── utf-16le.txt
│       │   └── utf-8.txt
│       ├── ka/
│       │   ├── georgian-academy.txt
│       │   ├── georgian-ps.txt
│       │   └── utf-8.txt
│       ├── ko/
│       │   ├── iso-2022-kr.txt
│       │   ├── johab.txt
│       │   ├── uhc.smi
│       │   ├── utf-16.le
│       │   ├── utf-32.be
│       │   └── utf-8.txt
│       ├── lt/
│       │   ├── iso-8859-10.txt
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-4.txt
│       │   └── utf-8.txt
│       ├── lv/
│       │   ├── iso-8859-10.txt
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-4.txt
│       │   └── utf-8.txt
│       ├── mk/
│       │   ├── ibm855.txt
│       │   ├── iso-8859-5.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── mt/
│       │   ├── iso-8859-3.txt
│       │   └── utf-8.txt
│       ├── no/
│       │   ├── ibm865.txt
│       │   ├── iso-8859-1.txt
│       │   ├── iso-8859-15.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── pl/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-13.txt
│       │   ├── iso-8859-16.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── pt/
│       │   ├── iso-8859-1.txt
│       │   └── utf-8.txt
│       ├── ro/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-16.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── ru/
│       │   ├── ibm855.txt
│       │   ├── ibm866.txt
│       │   ├── iso-8859-5.txt
│       │   ├── koi8-r.txt
│       │   ├── mac-cyrillic.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── sk/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── sl/
│       │   ├── ibm852.txt
│       │   ├── iso-8859-16.txt
│       │   ├── iso-8859-2.txt
│       │   ├── mac-centraleurope.txt
│       │   ├── utf-8.txt
│       │   └── windows-1250.txt
│       ├── sr/
│       │   ├── iso-8859-5.txt
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── sv/
│       │   ├── iso-8859-1.txt
│       │   ├── utf-8.txt
│       │   └── windows-1252.txt
│       ├── th/
│       │   ├── iso-8859-11.txt
│       │   ├── tis-620.txt
│       │   └── utf-8.txt
│       ├── tr/
│       │   ├── iso-8859-3.txt
│       │   ├── iso-8859-9.txt
│       │   └── utf-8.txt
│       ├── uk/
│       │   ├── utf-8.txt
│       │   └── windows-1251.txt
│       ├── vi/
│       │   ├── utf-8.txt
│       │   ├── viscii.txt
│       │   └── windows-1258.txt
│       └── zh/
│           ├── big5.txt
│           ├── euc-tw.txt
│           ├── gb18030.txt
│           └── utf-8.txt
├── scripts/
│   └── extract_change_log.py
├── src/
│   ├── CMakeLists.txt
│   ├── Common/
│   │   ├── CMakeLists.txt
│   │   ├── CommandLineParser.cpp
│   │   ├── CommandLineParser.h
│   │   ├── ConsoleSettings.cpp
│   │   ├── ConsoleSettings.h
│   │   ├── ErrorFunction.cpp
│   │   ├── ErrorFunction.h
│   │   ├── FileFunction.cpp
│   │   ├── FileFunction.h
│   │   ├── ResourceLoader.cpp
│   │   ├── ResourceLoader.h
│   │   ├── SingleApplication.h
│   │   ├── ThreadPool/
│   │   │   ├── SafeQueue.h
│   │   │   └── ThreadPool.h
│   │   ├── TimeStamp.cpp
│   │   ├── TimeStamp.h
│   │   ├── noncopyable.h
│   │   ├── tstring.cpp
│   │   └── tstring.h
│   ├── Control/
│   │   ├── CMakeLists.txt
│   │   ├── ControlStyle.h
│   │   ├── TListView.cpp
│   │   ├── TListView.h
│   │   ├── TMenu.cpp
│   │   └── TMenu.h
│   ├── Core/
│   │   ├── CMakeLists.txt
│   │   ├── CharsetCode.cpp
│   │   ├── CharsetCode.h
│   │   ├── Config.cpp
│   │   ├── Config.h
│   │   ├── Core.cpp
│   │   ├── Core.h
│   │   ├── Detect.cpp
│   │   ├── Detect.h
│   │   ├── Exceptions.cpp
│   │   ├── Exceptions.h
│   │   ├── LineBreaks.cpp
│   │   ├── LineBreaks.h
│   │   ├── Messages.cpp
│   │   ├── Messages.h
│   │   ├── TranslatorBase.h
│   │   ├── UCNVHelper.cpp
│   │   ├── UCNVHelper.h
│   │   ├── Vietnamese.cpp
│   │   ├── Vietnamese.h
│   │   ├── cedHelper.h
│   │   └── doublemap.h
│   ├── SmartCharsetConverter/
│   │   ├── CLIHandler.cpp
│   │   ├── CLIHandler.h
│   │   ├── CMakeLists.txt
│   │   ├── DialogMain.cpp
│   │   ├── DialogMain.h
│   │   ├── Resource/
│   │   │   └── lang_embed/
│   │   │       ├── English.json
│   │   │       ├── Simplified Chinese.json
│   │   │       └── Spanish.json
│   │   ├── SmartCharsetConverter.cpp
│   │   ├── SmartCharsetConverter.json
│   │   ├── SmartCharsetConverter.rc
│   │   └── resource.h
│   ├── SmartCharsetConverter-imgui/
│   │   ├── CMakeLists.txt
│   │   ├── FontAnalyzer.cpp
│   │   ├── FontAnalyzer.h
│   │   ├── FontLoader.cpp
│   │   ├── FontLoader.h
│   │   ├── ListView.cpp
│   │   ├── ListView.h
│   │   ├── MainWindow.cpp
│   │   ├── MainWindow.h
│   │   ├── Resource/
│   │   │   └── lang_embed/
│   │   │       ├── English.json
│   │   │       ├── Simplified Chinese.json
│   │   │       └── Spanish.json
│   │   ├── SmartCharsetConverter.rc
│   │   ├── UnicodeTable.cpp
│   │   ├── UnicodeTable.h
│   │   ├── main.cpp
│   │   └── resource.h
│   └── Translator/
│       ├── CMakeLists.txt
│       ├── LanguageService.cpp
│       ├── LanguageService.h
│       ├── StringId.h
│       ├── Translator.cpp
│       ├── Translator.h
│       └── internal/
│           ├── Language.cpp
│           └── Language.h
├── tests/
│   ├── CMakeLists.txt
│   ├── Core_Vietnamese_test.cpp
│   ├── Core_test.cpp
│   ├── Helper.cpp
│   ├── Helper.h
│   ├── LineBreaks_test.cpp
│   ├── String_test.cpp
│   ├── Vietnamese_test.cpp
│   ├── config.h.in
│   ├── icu_test.cpp
│   ├── memory_leak_detection.h
│   ├── memory_leak_detection_win.h
│   └── uchardet_samples_test.cpp
├── third_party/
│   ├── CMakeLists.txt
│   ├── WTL/
│   │   ├── Include/
│   │   │   ├── atlapp.h
│   │   │   ├── atlcrack.h
│   │   │   ├── atlctrls.h
│   │   │   ├── atlctrlw.h
│   │   │   ├── atlctrlx.h
│   │   │   ├── atlddx.h
│   │   │   ├── atldlgs.h
│   │   │   ├── atldwm.h
│   │   │   ├── atlfind.h
│   │   │   ├── atlframe.h
│   │   │   ├── atlgdi.h
│   │   │   ├── atlmisc.h
│   │   │   ├── atlprint.h
│   │   │   ├── atlres.h
│   │   │   ├── atlribbon.h
│   │   │   ├── atlscrl.h
│   │   │   ├── atlsplit.h
│   │   │   ├── atltheme.h
│   │   │   ├── atluser.h
│   │   │   └── atlwinx.h
│   │   └── MS-PL.txt
│   ├── ced/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── autogen.sh
│   │   ├── compact_enc_det/
│   │   │   ├── compact_enc_det.cc
│   │   │   ├── compact_enc_det.h
│   │   │   ├── compact_enc_det_fuzz_test.cc
│   │   │   ├── compact_enc_det_generated_tables.h
│   │   │   ├── compact_enc_det_generated_tables2.h
│   │   │   ├── compact_enc_det_hint_code.cc
│   │   │   ├── compact_enc_det_hint_code.h
│   │   │   ├── compact_enc_det_unittest.cc
│   │   │   └── detail_head_string.inc
│   │   └── util/
│   │       ├── basictypes.h
│   │       ├── case_insensitive_hash.h
│   │       ├── commandlineflags.h
│   │       ├── encodings/
│   │       │   ├── encodings.cc
│   │       │   ├── encodings.h
│   │       │   ├── encodings.pb.h
│   │       │   └── encodings_unittest.cc
│   │       ├── languages/
│   │       │   ├── languages.cc
│   │       │   ├── languages.h
│   │       │   └── languages.pb.h
│   │       ├── logging.h
│   │       ├── port.h
│   │       ├── string_util.h
│   │       └── varsetter.h
│   ├── guicon/
│   │   ├── CMakeLists.txt
│   │   ├── guicon.cpp
│   │   └── guicon.h
│   └── uchardet/
│       ├── WinCodePage_Identifiers.txt
│       ├── uchardet/
│       │   ├── AUTHORS
│       │   ├── CMakeLists.txt
│       │   ├── COPYING
│       │   ├── INSTALL
│       │   ├── Origin_GitHub.url
│       │   ├── README.md
│       │   ├── _GitHub.url
│       │   ├── _GitHub_libchardet.url
│       │   ├── doc/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── README.maintainer
│       │   │   └── uchardet.1
│       │   ├── script/
│       │   │   ├── BuildLangModel.py
│       │   │   ├── BuildLangModelLogs/
│       │   │   │   ├── LangAfricaansModel.log
│       │   │   │   ├── LangArabicModel.log
│       │   │   │   ├── LangBelarusianModel.log
│       │   │   │   ├── LangCroatianModel.log
│       │   │   │   ├── LangCzechModel.log
│       │   │   │   ├── LangDanishModel.log
│       │   │   │   ├── LangEsperantoModel.log
│       │   │   │   ├── LangEstonianModel.log
│       │   │   │   ├── LangFinnishModel.log
│       │   │   │   ├── LangFrenchModel.log
│       │   │   │   ├── LangGermanModel.log
│       │   │   │   ├── LangGreekModel.log
│       │   │   │   ├── LangHungarianModel.log
│       │   │   │   ├── LangIrishModel.log
│       │   │   │   ├── LangItalianModel.log
│       │   │   │   ├── LangLatvianModel.log
│       │   │   │   ├── LangLithuanianModel.log
│       │   │   │   ├── LangMalteseModel.log
│       │   │   │   ├── LangNederlandsModel.log
│       │   │   │   ├── LangPolishModel.log
│       │   │   │   ├── LangPortugueseModel.log
│       │   │   │   ├── LangRomanianModel.log
│       │   │   │   ├── LangSlovakModel.log
│       │   │   │   ├── LangSloveneModel.log
│       │   │   │   ├── LangSpanishModel.log
│       │   │   │   ├── LangSwedishModel.log
│       │   │   │   ├── LangThaiModel.log
│       │   │   │   ├── LangTurkishModel.log
│       │   │   │   └── LangVietnameseModel.log
│       │   │   ├── README
│       │   │   ├── charsets/
│       │   │   │   ├── codepoints.py
│       │   │   │   ├── db.py
│       │   │   │   ├── ibm852.py
│       │   │   │   ├── iso-8859-1.py
│       │   │   │   ├── iso-8859-10.py
│       │   │   │   ├── iso-8859-11.py
│       │   │   │   ├── iso-8859-13.py
│       │   │   │   ├── iso-8859-15.py
│       │   │   │   ├── iso-8859-16.py
│       │   │   │   ├── iso-8859-2.py
│       │   │   │   ├── iso-8859-3.py
│       │   │   │   ├── iso-8859-4.py
│       │   │   │   ├── iso-8859-6.py
│       │   │   │   ├── iso-8859-7.py
│       │   │   │   ├── iso-8859-9.py
│       │   │   │   ├── mac-centraleurope.py
│       │   │   │   ├── tis-620.py
│       │   │   │   ├── viscii.py
│       │   │   │   ├── windows-1250.py
│       │   │   │   ├── windows-1251.py
│       │   │   │   ├── windows-1252.py
│       │   │   │   ├── windows-1253.py
│       │   │   │   ├── windows-1256.py
│       │   │   │   ├── windows-1257.py
│       │   │   │   └── windows-1258.py
│       │   │   ├── debug.sh
│       │   │   ├── gen.sh
│       │   │   ├── header-template.cpp
│       │   │   ├── langs/
│       │   │   │   ├── af.py
│       │   │   │   ├── ar.py
│       │   │   │   ├── be.py
│       │   │   │   ├── cs.py
│       │   │   │   ├── da.py
│       │   │   │   ├── de.py
│       │   │   │   ├── el.py
│       │   │   │   ├── eo.py
│       │   │   │   ├── es.py
│       │   │   │   ├── et.py
│       │   │   │   ├── fi.py
│       │   │   │   ├── fr.py
│       │   │   │   ├── ga.py
│       │   │   │   ├── hr.py
│       │   │   │   ├── hu.py
│       │   │   │   ├── it.py
│       │   │   │   ├── lt.py
│       │   │   │   ├── lv.py
│       │   │   │   ├── mt.py
│       │   │   │   ├── nl.py
│       │   │   │   ├── pl.py
│       │   │   │   ├── pt.py
│       │   │   │   ├── ro.py
│       │   │   │   ├── sk.py
│       │   │   │   ├── sl.py
│       │   │   │   ├── sv.py
│       │   │   │   ├── th.py
│       │   │   │   ├── tr.py
│       │   │   │   └── vi.py
│       │   │   ├── release.sh
│       │   │   ├── requirements.txt
│       │   │   └── win32.sh
│       │   ├── src/
│       │   │   ├── CMakeLists.txt
│       │   │   ├── CharDistribution.cpp
│       │   │   ├── CharDistribution.h
│       │   │   ├── JpCntx.cpp
│       │   │   ├── JpCntx.h
│       │   │   ├── LangModels/
│       │   │   │   ├── LangAfricaansModel.cpp
│       │   │   │   ├── LangArabicModel.cpp
│       │   │   │   ├── LangBelarusianModel.cpp
│       │   │   │   ├── LangBulgarianModel.cpp
│       │   │   │   ├── LangCroatianModel.cpp
│       │   │   │   ├── LangCzechModel.cpp
│       │   │   │   ├── LangDanishModel.cpp
│       │   │   │   ├── LangEsperantoModel.cpp
│       │   │   │   ├── LangEstonianModel.cpp
│       │   │   │   ├── LangFinnishModel.cpp
│       │   │   │   ├── LangFrenchModel.cpp
│       │   │   │   ├── LangGermanModel.cpp
│       │   │   │   ├── LangGreekModel.cpp
│       │   │   │   ├── LangHebrewModel.cpp
│       │   │   │   ├── LangHungarianModel.cpp
│       │   │   │   ├── LangIrishModel.cpp
│       │   │   │   ├── LangItalianModel.cpp
│       │   │   │   ├── LangLatvianModel.cpp
│       │   │   │   ├── LangLithuanianModel.cpp
│       │   │   │   ├── LangMalteseModel.cpp
│       │   │   │   ├── LangNederlandsModel.cpp
│       │   │   │   ├── LangPolishModel.cpp
│       │   │   │   ├── LangPortugueseModel.cpp
│       │   │   │   ├── LangRomanianModel.cpp
│       │   │   │   ├── LangRussianModel.cpp
│       │   │   │   ├── LangSlovakModel.cpp
│       │   │   │   ├── LangSloveneModel.cpp
│       │   │   │   ├── LangSpanishModel.cpp
│       │   │   │   ├── LangSwedishModel.cpp
│       │   │   │   ├── LangThaiModel.cpp
│       │   │   │   ├── LangTurkishModel.cpp
│       │   │   │   └── LangVietnameseModel.cpp
│       │   │   ├── nsBig5Prober.cpp
│       │   │   ├── nsBig5Prober.h
│       │   │   ├── nsCharSetProber.cpp
│       │   │   ├── nsCharSetProber.h
│       │   │   ├── nsCodingStateMachine.h
│       │   │   ├── nsEUCJPProber.cpp
│       │   │   ├── nsEUCJPProber.h
│       │   │   ├── nsEUCKRProber.cpp
│       │   │   ├── nsEUCKRProber.h
│       │   │   ├── nsEUCTWProber.cpp
│       │   │   ├── nsEUCTWProber.h
│       │   │   ├── nsEscCharsetProber.cpp
│       │   │   ├── nsEscCharsetProber.h
│       │   │   ├── nsEscSM.cpp
│       │   │   ├── nsGB18030Prober.cpp
│       │   │   ├── nsGB18030Prober.h
│       │   │   ├── nsGB2312Prober.cpp
│       │   │   ├── nsGB2312Prober.h
│       │   │   ├── nsHebrewProber.cpp
│       │   │   ├── nsHebrewProber.h
│       │   │   ├── nsLatin1Prober.cpp
│       │   │   ├── nsLatin1Prober.h
│       │   │   ├── nsMBCSGroupProber.cpp
│       │   │   ├── nsMBCSGroupProber.h
│       │   │   ├── nsMBCSSM.cpp
│       │   │   ├── nsPkgInt.h
│       │   │   ├── nsSBCSGroupProber.cpp
│       │   │   ├── nsSBCSGroupProber.h
│       │   │   ├── nsSBCharSetProber.cpp
│       │   │   ├── nsSBCharSetProber.h
│       │   │   ├── nsSJISProber.cpp
│       │   │   ├── nsSJISProber.h
│       │   │   ├── nsUTF8Prober.cpp
│       │   │   ├── nsUTF8Prober.h
│       │   │   ├── nsUniversalDetector.cpp
│       │   │   ├── nsUniversalDetector.h
│       │   │   ├── nscore.h
│       │   │   ├── prmem.h
│       │   │   ├── symbols.cmake
│       │   │   ├── tables/
│       │   │   │   ├── Big5Freq.tab
│       │   │   │   ├── EUCKRFreq.tab
│       │   │   │   ├── EUCTWFreq.tab
│       │   │   │   ├── GB18030Freq.tab
│       │   │   │   ├── GB2312Freq.tab
│       │   │   │   └── JISFreq.tab
│       │   │   ├── tools/
│       │   │   │   ├── CMakeLists.txt
│       │   │   │   └── uchardet.cpp
│       │   │   ├── uchardet.cpp
│       │   │   └── uchardet.h
│       │   ├── uchardet.doap
│       │   └── uchardet.pc.in
│       └── version.txt
└── vcpkg.json
Download .txt
Showing preview only (238K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2874 symbols across 152 files)

FILE: sample/not_pass_yet/[GB18030]DialogAnimation.h
  function namespace (line 7) | namespace DialogAnimation

FILE: sample/not_pass_yet/[GB18030]LogRecord.h
  function class (line 9) | class LogRecord {

FILE: sample/not_pass_yet/[GB18030]TBarTool_GB.cpp
  function TElement (line 22) | TElement * TBarTool::AddIntoShape(TRealLine &RealLine)

FILE: sample/not_pass_yet/[GB18030]TDraw.h
  function class (line 22) | class TDraw

FILE: sample/not_pass_yet/[GB18030]TMenu.cpp
  function PopupMenu (line 3) | void PopupMenu(HWND hParent, int menu_id) {

FILE: sample/not_pass_yet/[UTF-8]TBarTool.cpp
  function TElement (line 22) | TElement * TBarTool::AddIntoShape(TRealLine &RealLine)

FILE: scripts/extract_change_log.py
  function ParseArguments (line 25) | def ParseArguments() -> argparse.Namespace:
  function SearchTag (line 32) | def SearchTag(filename: str, tag: str, versionStartStr: str) -> str:
  function main (line 68) | def main(args: argparse.Namespace):

FILE: src/Common/CommandLineParser.cpp
  function GetCommandLineArgs (line 4) | std::vector<std::string> GetCommandLineArgs() {

FILE: src/Common/ConsoleSettings.cpp
  function SetConsoleColor (line 5) | void SetConsoleColor(ConsoleColor color) noexcept {

FILE: src/Common/ConsoleSettings.h
  function ConsoleColor (line 5) | enum class ConsoleColor { GREEN = 10, BLUE = 11, RED = 12, PINK = 13, YE...

FILE: src/Common/ErrorFunction.cpp
  function GetLastErrorString (line 6) | std::tstring GetLastErrorString(DWORD errorCode) {

FILE: src/Common/FileFunction.cpp
  function ToTCHARArray (line 24) | std::unique_ptr<TCHAR[]> ToTCHARArray(const std::tstring &s) {
  function GetCommandLineByIndex (line 206) | std::wstring GetCommandLineByIndex(int index) {
  function GetCommandLineByIndex (line 215) | std::string GetCommandLineByIndex(int index) {
  function GetFileExists (line 226) | bool GetFileExists(const std::string filename) {
  function SplitPath (line 246) | vector<tstring> SplitPath(const std::tstring &s) {
  function SplitFileName (line 263) | vector<tstring> SplitFileName(const std::tstring &s) {
  function GetNameAndExt (line 271) | std::string GetNameAndExt(std::string s) noexcept {
  function tstring (line 283) | tstring ChangeExtend(tstring fileName, tstring ext) {
  function GetExtend (line 294) | std::string GetExtend(std::string fileName) {
  function GetFileSize (line 305) | uint64_t GetFileSize(FILE *fp) {
  function GetFileSize (line 313) | uint64_t GetFileSize(std::string fileName) {
  function FileSizeToHumanString (line 324) | std::string FileSizeToHumanString(uint64_t fileSize) {
  function ReadFileToBuffer (line 346) | std::tuple<std::unique_ptr<char[]>, uint64_t> ReadFileToBuffer(std::stri...
  function WriteFileFromBuffer (line 374) | void WriteFileFromBuffer(std::string fileName, const char buf[], uint64_...
  function WriteDetailFile (line 387) | void WriteDetailFile(HWND hWnd, std::tstring filename, std::function<voi...
  function findFiles (line 408) | void findFiles(std::vector<std::string> &ret, std::string lpPath, std::v...
  function TraversalAllFileNames (line 468) | std::vector<std::string> TraversalAllFileNames(std::string lpPath, std::...

FILE: src/Common/FileFunction.h
  function class (line 10) | class TFileDialog {
  function class (line 38) | class TFolderBrowser {
  function class (line 51) | class file_io_error : public std::runtime_error {

FILE: src/Common/ResourceLoader.cpp
  function LoadCustomFileFromResource (line 7) | std::vector<char> LoadCustomFileFromResource(int id, const std::wstring ...

FILE: src/Common/SingleApplication.h
  function class (line 21) | class SingleApplication {

FILE: src/Common/ThreadPool/ThreadPool.h
  function class (line 15) | class ThreadPool {

FILE: src/Common/TimeStamp.cpp
  function time_t (line 13) | time_t convertWindowsTimeToUnixTime(long long input) {
  function TimeStamp (line 50) | TimeStamp TimeStamp::operator+(const std::chrono::milliseconds &dura) co...
  function TimeStamp (line 65) | TimeStamp TimeStamp::now() { return TimeStamp(); }

FILE: src/Common/TimeStamp.h
  function class (line 23) | class TimeStamp {

FILE: src/Common/noncopyable.h
  function namespace (line 3) | namespace Zhongmao {

FILE: src/Common/tstring.cpp
  function string_to_wstring (line 14) | std::wstring string_to_wstring(const std::string &str) {
  function MyWideCharToMultiByte (line 32) | void MyWideCharToMultiByte(const wchar_t *wsrc, int wsrcSize, std::uniqu...
  function MyMultiByteToWideChar (line 49) | void MyMultiByteToWideChar(const char *src, int srcSize, std::unique_ptr...
  function wstring_to_string (line 66) | std::string wstring_to_string(const std::wstring &wstr) {
  function to_string (line 83) | std::string to_string(const std::wstring &ws) {
  function to_wstring (line 87) | std::wstring to_wstring(const std::string &s) {
  function to_wstring (line 91) | std::wstring to_wstring(const std::wstring &s) {
  function to_utf8 (line 95) | std::string to_utf8(const std::wstring &wstr) {
  function to_utf8 (line 112) | std::string to_utf8(const std::u16string &wstr) {
  function ansi_to_utf8 (line 119) | std::string ansi_to_utf8(const std::string &str) {
  function to_utf8 (line 131) | std::vector<std::string> to_utf8(const std::vector<std::wstring> &wstrs) {
  function utf8_to_string (line 139) | std::string utf8_to_string(const std::string &str) {
  function utf8_to_wstring (line 157) | std::wstring utf8_to_wstring(const std::string &str) {
  function to_hex (line 165) | std::string to_hex(char c) noexcept {
  function FixEndLine (line 183) | void FixEndLine(std::tstring &s) {
  function to_hex (line 202) | std::string to_hex(const char *buf, int bufSize) {
  function to_hex (line 213) | std::string to_hex(std::string s) {
  function to_hex (line 224) | std::wstring to_hex(std::wstring s) {
  function Split (line 267) | std::vector<std::string_view> Split(std::string_view s, const std::strin...

FILE: src/Common/tstring.h
  function T (line 92) | T ret{s}

FILE: src/Control/ControlStyle.h
  type PROCESS_DPI_AWARENESS (line 29) | typedef enum PROCESS_DPI_AWARENESS {
  type MONITOR_DPI_TYPE (line 35) | typedef enum MONITOR_DPI_TYPE {
  function SupportHighDPI (line 46) | inline void SupportHighDPI() {

FILE: src/Control/TListView.h
  function LRESULT (line 25) | LRESULT OnDropFiles(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand...

FILE: src/Control/TMenu.cpp
  function TMenu (line 14) | TMenu &TMenu::SetItemToBeContainer(int itemId) noexcept {
  function TMenu (line 81) | TMenu &TMenu::GetChild(int itemId) {

FILE: src/Control/TMenu.h
  function class (line 11) | class TMenu {
  function class (line 41) | class TPopupMenu : public TMenu {

FILE: src/Core/CharsetCode.cpp
  type MyCharset (line 6) | struct MyCharset {
  function ToViewCharsetName (line 92) | std::string ToViewCharsetName(CharsetCode code) noexcept {
  function CharsetCode (line 96) | CharsetCode ToCharsetCode(const std::string &name) {
  function ToICUCharsetName (line 125) | std::string ToICUCharsetName(CharsetCode code) noexcept {
  function HasBom (line 129) | bool HasBom(CharsetCode code) {
  function BomSize (line 151) | int BomSize(CharsetCode code) {
  function CharsetCode (line 163) | CharsetCode CheckBom(char *buf, int bufSize) {
  function ConvertEngine (line 182) | ConvertEngine GetConvertEngine(CharsetCode code) noexcept {

FILE: src/Core/CharsetCode.h
  type class (line 9) | enum class
  type class (line 92) | enum class

FILE: src/Core/Config.h
  type Configuration (line 18) | struct Configuration {
  function OutputTarget (line 20) | enum class OutputTarget { ORIGIN, TO_DIR };

FILE: src/Core/Core.cpp
  function Decode (line 23) | std::u16string Decode(std::string_view src, CharsetCode code) {
  function DecodeToLimitBytes (line 88) | std::u16string DecodeToLimitBytes(std::string_view src, uint64_t maxInpu...
  type FromUFLAGContext (line 112) | struct FromUFLAGContext {
    method FromUFLAGContext (line 116) | FromUFLAGContext() : subCallback(nullptr), subContext(nullptr) {}
  function U_CAPI (line 122) | U_CAPI void U_EXPORT2 flagCB_fromU(const void *context, UConverterFromUn...
  function Encode (line 191) | std::string Encode(std::u16string_view src, CharsetCode targetCode) {
  function Convert (line 267) | std::string Convert(std::string_view src, ConvertParam inputParam) {
  function CharsetCodeToVietEncoding (line 280) | viet::Encoding CharsetCodeToVietEncoding(CharsetCode code) noexcept {
  function Configuration (line 308) | const Configuration &Core::GetConfig() const noexcept {
  function Configuration (line 312) | Configuration &Core::GetConfigRef() noexcept {
  function RemoveASCII (line 360) | void RemoveASCII(std::vector<char> &data) noexcept {

FILE: src/Core/Core.h
  type ConvertParam (line 55) | struct ConvertParam {
  type CoreInitOption (line 72) | struct CoreInitOption {

FILE: src/Core/Detect.cpp
  function DetectByUCharDet (line 15) | std::tuple<std::string, int> DetectByUCharDet(uchardet *det, const char ...
  function DetectByUCSDet (line 37) | std::tuple<std::string, int> DetectByUCSDet(const char *buf, int32_t buf...
  function DetectByMine (line 65) | std::unordered_set<CharsetCode> DetectByMine(std::string_view src) {
  function DetectByCED (line 81) | std::tuple<CharsetCode, bool> DetectByCED(const char *buf, int len) {
  function CharsetCode (line 111) | CharsetCode ToCharsetCodeFinal(CharsetCode inputCode, const char *buf, s...
  function CharsetCode (line 147) | CharsetCode DetectEncodingPlain(uchardet *det, const char *buf, std::siz...
  function CharsetCode (line 196) | CharsetCode DetectEncoding(uchardet *det, const char *buf, std::size_t b...

FILE: src/Core/Exceptions.h
  function class (line 14) | class MyRuntimeError : public std::runtime_error {
  function class (line 39) | class UnassignedCharError : public MyRuntimeError {
  function class (line 58) | class io_error_ignore : public std::runtime_error {
  function class (line 63) | class UCNVError : public MyRuntimeError {
  function class (line 77) | class TruncatedCharFoundError : public UCNVError {
  function class (line 86) | class IllegalCharFoundError : public UCNVError {
  function class (line 105) | class CharsetNotSupportedError : public MyRuntimeError {
  function class (line 121) | class ConvertError : public MyRuntimeError {
  function class (line 142) | class FileIOError : public MyRuntimeError {
  function virtual (line 150) | virtual const std::string ToLocalString(TranslatorBase *translator) cons...

FILE: src/Core/LineBreaks.cpp
  function LineBreaksToViewName (line 11) | std::string LineBreaksToViewName(LineBreaks linebreaks) noexcept {
  function LineBreaks (line 15) | LineBreaks ViewNameToLineBreaks(std::string viewName) noexcept {
  function LineBreaks (line 19) | LineBreaks GetLineBreaks(const UChar *buf, std::size_t len) {
  function ChangeLineBreaks (line 70) | void ChangeLineBreaks(std::u16string &str, LineBreaks targetLineBreak) {

FILE: src/Core/LineBreaks.h
  function LineBreaks (line 14) | enum class LineBreaks { CRLF, LF, CR, EMPTY, MIX, UNKNOWN };

FILE: src/Core/Messages.h
  function MessageId (line 7) | enum class MessageId {

FILE: src/Core/TranslatorBase.h
  type class (line 5) | enum class
  function class (line 6) | class TranslatorBase {

FILE: src/Core/UCNVHelper.cpp
  function DealWithUCNVError (line 4) | void DealWithUCNVError(UErrorCode err) {

FILE: src/Core/Vietnamese.cpp
  type viet (line 9) | namespace viet {
    type internal (line 11) | namespace internal {
    type Rune (line 272) | struct Rune {
      method AddToString (line 281) | void AddToString(std::string &out, Encoding targetEncoding) const no...
    function Init (line 309) | void Init() noexcept {
    function CheckInit (line 350) | void CheckInit() noexcept {
    function CheckEncoding (line 354) | bool CheckEncoding(const char *str, std::size_t len, Encoding encoding...
    function CheckEncoding (line 419) | bool CheckEncoding(const std::string &str, Encoding encoding) noexcept {
    function ConvertTCVN3ToUtfX (line 424) | auto ConvertTCVN3ToUtfX(std::string_view src) -> ReturnType {
    function ConvertVNIToUtfX (line 462) | auto ConvertVNIToUtfX(std::string_view src) -> ReturnType {
    function ConvertToUtfX (line 513) | auto ConvertToUtfX(std::string_view src, Encoding srcEncoding) -> Retu...
    function ConvertToUtf8 (line 573) | std::string ConvertToUtf8(std::string_view src, Encoding srcEncoding) {
    function ConvertToUtf16LE (line 577) | std::u16string ConvertToUtf16LE(std::string_view src, Encoding srcEnco...
    function ConvertFromUtf8 (line 581) | std::string ConvertFromUtf8(std::string_view utf8Str, Encoding destEnc...
    function ConvertFromUtf16LE (line 625) | std::string ConvertFromUtf16LE(std::u16string_view utf16Str, Encoding ...
    function Convert (line 649) | std::string Convert(std::string_view src, Encoding srcEncoding, Encodi...

FILE: src/Core/Vietnamese.h
  function namespace (line 14) | namespace viet {

FILE: src/Core/doublemap.h
  function has (line 15) | bool has(const T1 &t1) const {
  function has (line 19) | bool has(const T2 &t2) const {
  function insert (line 23) | void insert(std::pair<T1, T2> &&pr) {
  function T2 (line 38) | const T2 &at(const T1 &t1) const {
  function T1 (line 42) | const T1 &at(const T2 &t2) const {

FILE: src/SmartCharsetConverter-imgui/FontLoader.cpp
  type FontInfo (line 12) | struct FontInfo {
  function LoadFonts (line 20) | void LoadFonts(ImFontAtlas *ioFonts, float scaleFactor) {

FILE: src/SmartCharsetConverter-imgui/FontLoader.h
  function class (line 9) | class FontLoader {

FILE: src/SmartCharsetConverter-imgui/ListView.cpp
  function Compare (line 10) | std::tuple<bool, bool> Compare(const ListView::MyItem *a, const ListView...
  function CompareWithSortSpecs (line 19) | bool CompareWithSortSpecs(ImGuiTableSortSpecs *sort_specs, const ListVie...

FILE: src/SmartCharsetConverter-imgui/ListView.h
  function class (line 12) | class ListView {

FILE: src/SmartCharsetConverter-imgui/MainWindow.cpp
  function EventAction (line 27) | EventAction PopupMessageBox(const std::string &text, const std::string &...

FILE: src/SmartCharsetConverter-imgui/MainWindow.h
  function EventAction (line 14) | enum class EventAction {

FILE: src/SmartCharsetConverter-imgui/UnicodeTable.cpp
  type uni_table (line 3) | namespace uni_table {
    function Utf8Str (line 8) | Utf8Str PointToUtf8(int point) noexcept {
    function InitUtf8Table (line 42) | void InitUtf8Table() {

FILE: src/SmartCharsetConverter-imgui/UnicodeTable.h
  function namespace (line 18) | namespace uni_table {
  function ImGuiSelectionBasicStorage (line 79) | struct ExampleSelectionWithDeletion : ImGuiSelectionBasicStorage {
  function ClearItems (line 144) | struct ExampleAssetsBrowser {
  function UpdateLayoutSizes (line 192) | void UpdateLayoutSizes(float avail_width) {
  function Draw (line 213) | void Draw(const char *title, bool *p_open) {

FILE: src/SmartCharsetConverter-imgui/main.cpp
  function glfw_error_callback (line 47) | static void glfw_error_callback(int error, const char *description) {
  function drop_callback (line 52) | void drop_callback(GLFWwindow *window, int count, const char **paths) {
  function WinMain (line 71) | int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR szCmdLine...

FILE: src/SmartCharsetConverter/CLIHandler.cpp
  function CLIMain (line 54) | int CLIMain(const std::vector<std::string> &args) noexcept {

FILE: src/SmartCharsetConverter/DialogMain.cpp
  function BOOL (line 127) | BOOL DialogMain::OnInitDialog(CWindow wndFocus, LPARAM lInitParam) {
  function LRESULT (line 555) | LRESULT DialogMain::OnBnClickedRadioStretegyNoFilter(WORD /*wNotifyCode*...
  function LRESULT (line 561) | LRESULT DialogMain::OnBnClickedRadioStretegySmart(WORD /*wNotifyCode*/, ...
  function LRESULT (line 567) | LRESULT DialogMain::OnBnClickedRadioStretegyManual(WORD /*wNotifyCode*/,...
  function LRESULT (line 573) | LRESULT DialogMain::OnBnClickedRadioToOrigin(WORD /*wNotifyCode*/, WORD ...
  function LRESULT (line 579) | LRESULT DialogMain::OnBnClickedRadioToDir(WORD /*wNotifyCode*/, WORD /*w...
  function LRESULT (line 584) | LRESULT DialogMain::OnBnClickedRadioUtf8(WORD /*wNotifyCode*/, WORD /*wI...
  function LRESULT (line 589) | LRESULT DialogMain::OnBnClickedRadioUtf8bom(WORD /*wNotifyCode*/, WORD /...
  function LRESULT (line 594) | LRESULT DialogMain::OnBnClickedRadioGb18030(WORD /*wNotifyCode*/, WORD /...
  function LRESULT (line 599) | LRESULT DialogMain::OnBnClickedRadioOther(WORD /*wNotifyCode*/, WORD /*w...
  function LRESULT (line 637) | LRESULT DialogMain::OnBnClickedButtonAddFiles(WORD /*wNotifyCode*/, WORD...
  function LRESULT (line 675) | LRESULT DialogMain::OnBnClickedButtonAddDir(WORD /*wNotifyCode*/, WORD /...
  function LRESULT (line 691) | LRESULT DialogMain::OnBnClickedButtonStart(WORD /*wNotifyCode*/, WORD /*...
  function LRESULT (line 718) | LRESULT DialogMain::OnBnClickedButtonClear(WORD /*wNotifyCode*/, WORD /*...
  function LRESULT (line 724) | LRESULT DialogMain::OnBnClickedButtonSettings(WORD, WORD, HWND, BOOL &) {
  function LRESULT (line 731) | LRESULT DialogMain::OnBnClickedButtonSetOutputDir(WORD /*wNotifyCode*/, ...
  function LRESULT (line 744) | LRESULT DialogMain::OnCbnSelchangeComboOtherCharset(WORD /*wNotifyCode*/...
  function LRESULT (line 751) | LRESULT DialogMain::OnNMRclickListview(int /*idCtrl*/, LPNMHDR pNMHDR, B...
  function LRESULT (line 763) | LRESULT DialogMain::OnOpenWithNotepad(WORD /*wNotifyCode*/, WORD /*wID*/...
  function LRESULT (line 776) | LRESULT DialogMain::OnRemoveItem(WORD /*wNotifyCode*/, WORD /*wID*/, HWN...
  function LRESULT (line 794) | LRESULT DialogMain::OnSpecifyOriginCharset(WORD /*wNotifyCode*/, WORD wI...
  function LRESULT (line 825) | LRESULT DialogMain::OnSelectLanguage(WORD, WORD wID, HWND, BOOL &) {
  function LRESULT (line 843) | LRESULT DialogMain::OnEnChangeEditIncludeText(WORD /*wNotifyCode*/, WORD...
  function LRESULT (line 868) | LRESULT DialogMain::OnNMClickSyslink1(int /*idCtrl*/, LPNMHDR pNMHDR, BO...
  function LRESULT (line 875) | LRESULT DialogMain::OnBnClickedCheckConvertReturn(WORD /*wNotifyCode*/, ...
  function LRESULT (line 887) | LRESULT DialogMain::OnBnClickedRadioCrlf(WORD /*wNotifyCode*/, WORD /*wI...
  function LRESULT (line 893) | LRESULT DialogMain::OnBnClickedRadioLf(WORD /*wNotifyCode*/, WORD /*wID*...
  function LRESULT (line 899) | LRESULT DialogMain::OnBnClickedRadioCr(WORD /*wNotifyCode*/, WORD /*wID*...
  function LRESULT (line 905) | LRESULT DialogMain::OnDropFiles(UINT uMsg, WPARAM wParam, LPARAM lParam,...
  function LRESULT (line 931) | LRESULT DialogMain::OnUser(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL...

FILE: src/SmartCharsetConverter/DialogMain.h
  type MyMessage (line 29) | struct MyMessage {
  function RefreshInterfaceByCurrentLanguage (line 68) | void RefreshInterfaceByCurrentLanguage() noexcept;
  function CharsetCode (line 116) | CharsetCode CommandIdToCharsetCode(int id) noexcept {
  function GetSelectLanguageIdEnd (line 127) | int GetSelectLanguageIdEnd() noexcept {
  function LanguageNameToCommandId (line 131) | int LanguageNameToCommandId(const std::string &languageName) noexcept {

FILE: src/SmartCharsetConverter/SmartCharsetConverter.cpp
  function WinMain (line 18) | int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR szCmdLine...

FILE: src/Translator/LanguageService.h
  type LanguageServiceOption (line 9) | struct LanguageServiceOption {
  function class (line 27) | class LanguageService : public TranslatorBase {

FILE: src/Translator/StringId.h
  function namespace (line 13) | namespace v0_2 {

FILE: src/Translator/Translator.h
  function class (line 5) | class Translator : public TranslatorBase {

FILE: src/Translator/internal/Language.cpp
  type internal (line 15) | namespace internal {

FILE: src/Translator/internal/Language.h
  function namespace (line 12) | namespace internal {

FILE: tests/Core_Vietnamese_test.cpp
  function TEST (line 14) | TEST(CoreVietnamese, ConvertToUtf8) {
  function TEST (line 36) | TEST(CoreVietnamese, ConvertToUtf16LE) {
  function TEST (line 63) | TEST(CoreVietnamese, ConvertFromUtf8) {
  function TEST (line 85) | TEST(CoreVietnamese, ConvertFromUtf16LE) {
  function TestBuiltinConvertOtherToOther (line 111) | void TestBuiltinConvertOtherToOther(CharsetCode middleEncoding) {
  function TEST (line 133) | TEST(CoreVietnamese, ConvertOtherToOther) {

FILE: tests/Core_test.cpp
  function TEST (line 17) | TEST(Core, EncodeWithUnassignedChars) {
  function TEST (line 29) | TEST(Core, DetectEncodingMulti) {

FILE: tests/Helper.cpp
  type helper (line 10) | namespace helper {
    function ScanDirectoryForExpectedEncodingTable (line 18) | std::unordered_map<std::string, CharsetCode> ScanDirectoryForExpectedE...

FILE: tests/Helper.h
  function namespace (line 8) | namespace helper {

FILE: tests/LineBreaks_test.cpp
  function TEST (line 7) | TEST(LineBreaks, LineBreaks) {

FILE: tests/String_test.cpp
  function TEST (line 7) | TEST(Split, Split) {

FILE: tests/Vietnamese_test.cpp
  function TEST (line 14) | TEST(Vietnamese, CheckEncoding) {
  function TEST (line 28) | TEST(Vietnamese, BuiltinConvertToUtf8) {
  function TEST (line 46) | TEST(Vietnamese, BuiltinConvertToUtf16LE) {
  function TEST (line 65) | TEST(Vietnamese, BuiltinConvertFromUtf8) {
  function TEST (line 83) | TEST(Vietnamese, BuiltinConvertFromUtf16LE) {
  function TestBuiltinConvertOtherToOther (line 107) | void TestBuiltinConvertOtherToOther(viet::Encoding middleEncoding) {
  function TEST (line 123) | TEST(Vietnamese, BuiltinConvertOtherToOther) {
  function TEST (line 131) | TEST(Vietnamese, ConvertFuzz) {
  function TEST (line 189) | TEST(Vietnamese, ConvertWithUTF16LEFuzz) {

FILE: tests/icu_test.cpp
  function TEST (line 15) | TEST(Core, icu) {

FILE: tests/memory_leak_detection.h
  function class (line 6) | class MemoryLeakDetection final {

FILE: tests/memory_leak_detection_win.h
  function class (line 19) | class MemoryLeakDetection final {

FILE: tests/uchardet_samples_test.cpp
  function TEST (line 16) | TEST(Core, uchardet_sample_test) {

FILE: third_party/WTL/Include/atlapp.h
  type _IMAGELIST (line 135) | struct _IMAGELIST { }
  type _TREEITEM (line 136) | struct _TREEITEM { }
  type _PSP (line 137) | struct _PSP { }
  function namespace (line 142) | namespace ATL { HRESULT AtlGetCommCtrlVersion(LPDWORD pdwMajor, LPDWORD ...
  function namespace (line 155) | namespace WTL
  function namespace (line 250) | namespace RunTimeHelper
  function namespace (line 379) | namespace ModuleHelper
  function namespace (line 407) | namespace SecureHelper
  function namespace (line 510) | namespace MinCrtHelper
  function namespace (line 545) | namespace GenericWndClass
  function class (line 575) | class ATL_NO_VTABLE CMessageFilter
  function class (line 585) | class ATL_NO_VTABLE CIdleHandler
  function class (line 595) | class CMessageLoop
  function class (line 724) | class CStaticDataInitCriticalSectionLock
  function class (line 744) | class CWindowCreateCriticalSectionLock
  function class (line 773) | class CAppModule : public ATL::CComModule
  function Term (line 801) | void Term()
  function BOOL (line 809) | BOOL AddMessageLoop(CMessageLoop* pMsgLoop)
  function BOOL (line 829) | BOOL RemoveMessageLoop()
  function CMessageLoop (line 846) | CMessageLoop* GetMessageLoop(DWORD dwThreadID = ::GetCurrentThreadId()) ...
  function BOOL (line 865) | BOOL InitSettingChangeNotify(DLGPROC pfnDlgProc = _SettingChangeDlgProc)
  function TermSettingChangeNotify (line 905) | void TermSettingChangeNotify()
  function BOOL (line 923) | BOOL AddSettingChangeNotify(HWND hWnd)
  function BOOL (line 943) | BOOL RemoveSettingChangeNotify(HWND hWnd)
  function DLGTEMPLATE (line 963) | struct _ATL_EMPTY_DLGTEMPLATE : DLGTEMPLATE
  function INT_PTR (line 973) | static INT_PTR CALLBACK _SettingChangeDlgProc(HWND hWnd, UINT uMsg, WPAR...
  function class (line 999) | class CServerAppModule : public CAppModule
  function Term (line 1018) | void Term()
  function LONG (line 1026) | LONG Unlock() throw()
  function MonitorShutdown (line 1037) | void MonitorShutdown()
  function StartMonitor (line 1066) | bool StartMonitor()
  function DWORD (line 1083) | static DWORD WINAPI MonitorProc(void* pv)
  type ATL (line 1095) | typedef ATL::CRegKey CRegKeyEx;
  function namespace (line 1119) | namespace ATL

FILE: third_party/WTL/Include/atlctrls.h
  function namespace (line 80) | namespace WTL
  function LPCTSTR (line 124) | static LPCTSTR GetWndClassName()
  function HICON (line 129) | HICON GetIcon() const
  function HENHMETAFILE (line 141) | HENHMETAFILE GetEnhMetaFile() const
  function CBitmapHandle (line 153) | CBitmapHandle GetBitmap() const
  type CStaticT (line 178) | typedef CStaticT<ATL::CWindow>   CStatic;
  function LPCTSTR (line 206) | static LPCTSTR GetWndClassName()
  function UINT (line 211) | UINT GetState() const
  function GetCheck (line 223) | int GetCheck() const
  function UINT (line 235) | UINT GetButtonStyle() const
  function HICON (line 253) | HICON SetIcon(HICON hIcon)
  function CBitmapHandle (line 259) | CBitmapHandle GetBitmap() const
  function BOOL (line 324) | BOOL SetSplitInfo(PBUTTON_SPLITINFO pSplitInfo)
  function GetNoteLength (line 331) | int GetNoteLength() const
  function BOOL (line 345) | BOOL SetNote(LPCWSTR lpstrNoteText)
  function LRESULT (line 352) | LRESULT SetElevationRequiredState(BOOL bSet)
  function Click (line 360) | void Click()
  type CButtonT (line 367) | typedef CButtonT<ATL::CWindow>   CButton;
  function LPCTSTR (line 395) | static LPCTSTR GetWndClassName()
  function GetCount (line 401) | int GetCount() const
  function GetHorizontalExtent (line 414) | int GetHorizontalExtent() const
  function GetTopIndex (line 426) | int GetTopIndex() const
  function LCID (line 438) | LCID GetLocale() const
  function DWORD (line 450) | DWORD GetListBoxInfo() const
  function SetCurSel (line 464) | int SetCurSel(int nSelect)
  function GetSel (line 472) | int GetSel(int nIndex) const           // also works for single-selection
  function GetSelItems (line 492) | int GetSelItems(int nMaxItems, LPINT rgIndex) const
  function GetAnchorIndex (line 499) | int GetAnchorIndex() const
  function GetCaretIndex (line 513) | int GetCaretIndex() const
  function SetItemData (line 532) | int SetItemData(int nIndex, DWORD_PTR dwItemData)
  function SetItemDataPtr (line 544) | int SetItemDataPtr(int nIndex, void* pData)
  function GetItemRect (line 550) | int GetItemRect(int nIndex, LPRECT lpRect) const
  function GetText (line 556) | int GetText(int nIndex, LPTSTR lpszBuffer) const
  function BOOL (line 563) | BOOL GetTextBSTR(int nIndex, BSTR& bstrText) const
  function GetText (line 587) | int GetText(int nIndex, ATL::CString& strText) const
  function GetTextLen (line 604) | int GetTextLen(int nIndex) const
  function GetItemHeight (line 610) | int GetItemHeight(int nIndex) const
  function SetItemHeight (line 616) | int SetItemHeight(int nIndex, UINT cyItemHeight)
  function SetColumnWidth (line 623) | void SetColumnWidth(int cxWidth)
  function BOOL (line 629) | BOOL SetTabStops(int nTabStops, LPINT rgTabStops)
  function BOOL (line 636) | BOOL SetTabStops()
  function BOOL (line 643) | BOOL SetTabStops(const int& cxEachStop)    // takes an 'int'
  function InitStorage (line 651) | int InitStorage(int nItems, UINT nBytes)
  function ResetContent (line 657) | void ResetContent()
  function UINT (line 663) | UINT ItemFromPoint(POINT pt, BOOL& bOutside) const
  function AddString (line 672) | int AddString(LPCTSTR lpszItem)
  function DeleteString (line 678) | int DeleteString(UINT nIndex)
  function InsertString (line 684) | int InsertString(int nIndex, LPCTSTR lpszItem)
  function Dir (line 690) | int Dir(UINT attr, LPCTSTR lpszWildCard)
  function AddFile (line 696) | int AddFile(LPCTSTR lpstrFileName)
  function FindString (line 703) | int FindString(int nStartAfter, LPCTSTR lpszItem) const
  function FindStringExact (line 709) | int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
  function SelectString (line 715) | int SelectString(int nStartAfter, LPCTSTR lpszItem)
  function SelItemRange (line 721) | int SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem)
  type CListBoxT (line 730) | typedef CListBoxT<ATL::CWindow>   CListBox;
  function LPCTSTR (line 758) | static LPCTSTR GetWndClassName()
  function GetCount (line 764) | int GetCount() const
  function SetCurSel (line 776) | int SetCurSel(int nSelect)
  function LCID (line 782) | LCID GetLocale() const
  function GetTopIndex (line 794) | int GetTopIndex() const
  function UINT (line 806) | UINT GetHorizontalExtent() const
  function GetDroppedWidth (line 818) | int GetDroppedWidth() const
  function BOOL (line 830) | BOOL GetComboBoxInfo(PCOMBOBOXINFO pComboBoxInfo) const
  function DWORD (line 837) | DWORD GetEditSel() const
  function DWORD_PTR (line 850) | DWORD_PTR GetItemData(int nIndex) const
  function SetItemData (line 856) | int SetItemData(int nIndex, DWORD_PTR dwItemData)
  function SetItemDataPtr (line 868) | int SetItemDataPtr(int nIndex, void* pData)
  function GetLBText (line 874) | int GetLBText(int nIndex, LPTSTR lpszText) const
  function BOOL (line 880) | BOOL GetLBTextBSTR(int nIndex, BSTR& bstrText) const
  function GetLBText (line 903) | int GetLBText(int nIndex, ATL::CString& strText) const
  function GetLBTextLen (line 920) | int GetLBTextLen(int nIndex) const
  function GetItemHeight (line 926) | int GetItemHeight(int nIndex) const
  function SetItemHeight (line 932) | int SetItemHeight(int nIndex, UINT cyItemHeight)
  function BOOL (line 938) | BOOL GetExtendedUI() const
  function BOOL (line 956) | BOOL GetDroppedState() const
  function BOOL (line 968) | BOOL SetMinVisible(int nMinVisible)
  function BOOL (line 975) | BOOL GetCueBannerText(LPWSTR lpwText, int cchText) const
  function BOOL (line 982) | BOOL SetCueBannerText(LPCWSTR lpcwText)
  function InitStorage (line 989) | int InitStorage(int nItems, UINT nBytes)
  function ResetContent (line 995) | void ResetContent()
  function BOOL (line 1002) | BOOL LimitText(int nMaxChars)
  function AddString (line 1016) | int AddString(LPCTSTR lpszString)
  function DeleteString (line 1022) | int DeleteString(UINT nIndex)
  function InsertString (line 1028) | int InsertString(int nIndex, LPCTSTR lpszString)
  function Dir (line 1034) | int Dir(UINT attr, LPCTSTR lpszWildCard)
  function FindString (line 1041) | int FindString(int nStartAfter, LPCTSTR lpszString) const
  function FindStringExact (line 1047) | int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
  function SelectString (line 1053) | int SelectString(int nStartAfter, LPCTSTR lpszString)
  function Clear (line 1060) | void Clear()
  function Copy (line 1066) | void Copy()
  function Cut (line 1072) | void Cut()
  function Paste (line 1078) | void Paste()
  type CComboBoxT (line 1085) | typedef CComboBoxT<ATL::CWindow>   CComboBox;
  function LPCTSTR (line 1113) | static LPCTSTR GetWndClassName()
  function BOOL (line 1118) | BOOL CanUndo() const
  function BOOL (line 1130) | BOOL GetModify() const
  function DWORD (line 1148) | DWORD GetSel() const
  function HLOCAL (line 1160) | HLOCAL GetHandle() const
  function DWORD (line 1172) | DWORD GetMargins() const
  function UINT (line 1192) | UINT GetLimitText() const
  function POINT (line 1204) | POINT PosFromChar(UINT nChar) const
  function GetLine (line 1222) | int GetLine(int nIndex, LPTSTR lpszBuffer) const
  function GetLine (line 1228) | int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const
  function TCHAR (line 1235) | TCHAR GetPasswordChar() const
  function EDITWORDBREAKPROC (line 1247) | EDITWORDBREAKPROC GetWordBreakProc() const
  function GetFirstVisibleLine (line 1259) | int GetFirstVisibleLine() const
  function UINT (line 1278) | UINT GetImeStatus(UINT uStatus) const
  function UINT (line 1284) | UINT SetImeStatus(UINT uStatus, UINT uData)
  function BOOL (line 1290) | BOOL GetCueBannerText(LPCWSTR lpstrText, int cchText) const
  function EmptyUndoBuffer (line 1304) | void EmptyUndoBuffer()
  function BOOL (line 1310) | BOOL FmtLines(BOOL bAddEOL)
  function SetRect (line 1352) | void SetRect(LPCRECT lpRect)
  function SetRectNP (line 1358) | void SetRectNP(LPCRECT lpRect)
  function BOOL (line 1390) | BOOL SetTabStops(int nTabStops, LPINT rgTabStops)
  function BOOL (line 1396) | BOOL SetTabStops()
  function BOOL (line 1402) | BOOL SetTabStops(const int& cxEachStop)    // takes an 'int'
  function ScrollCaret (line 1408) | void ScrollCaret()
  function Scroll (line 1414) | int Scroll(int nScrollAction)
  function BOOL (line 1436) | BOOL ShowBalloonTip(PEDITBALLOONTIP pEditBaloonTip)
  function BOOL (line 1442) | BOOL HideBalloonTip()
  function DWORD (line 1449) | DWORD GetHilite() const
  function SetHilite (line 1463) | void SetHilite(int nStartChar, int nEndChar)
  function BOOL (line 1471) | BOOL Undo()
  function Clear (line 1477) | void Clear()
  function Copy (line 1483) | void Copy()
  function Cut (line 1489) | void Cut()
  function Paste (line 1495) | void Paste()
  function DWORD (line 1503) | DWORD SetExtendedStyle(DWORD dwStyle, DWORD dwMask)
  function DWORD (line 1509) | DWORD GetExtendedStyle() const
  function EC_ENDOFLINE (line 1521) | EC_ENDOFLINE GetEndOfLine() const
  function SearchWeb (line 1533) | void SearchWeb()
  function BOOL (line 1539) | BOOL SetCaretIndex(DWORD dwCaretIndex)
  function DWORD (line 1545) | DWORD GetCaretIndex() const
  function BOOL (line 1557) | BOOL SetZoom(int nNum, int nDen)
  function DWORD (line 1565) | DWORD GetFileLineFromChar(DWORD dwCharIndex) const
  function DWORD (line 1571) | DWORD GetFileLineIndex(DWORD dwLineNum) const
  function DWORD (line 1577) | DWORD GetFileLineLength(DWORD dwCharIndex) const
  function DWORD (line 1583) | DWORD GetFileLine(DWORD dwLineNum, LPTSTR lpstrLine, WORD wLen) const
  function DWORD (line 1611) | DWORD GetFileLineCount() const
  function LRESULT (line 1668) | LRESULT OnEditCopy(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/,...
  function LRESULT (line 1682) | LRESULT OnEditPaste(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/...
  function LRESULT (line 1696) | LRESULT OnEditUndo(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/,...
  function BOOL (line 1729) | BOOL HasSelection() const
  function LPCTSTR (line 1770) | static LPCTSTR GetWndClassName()
  function GetScrollPos (line 1775) | int GetScrollPos() const
  function BOOL (line 1799) | BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo) const
  function BOOL (line 1821) | BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollBarInfo) const
  function BOOL (line 1834) | BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH)
  type CScrollBarT (line 1841) | typedef CScrollBarT<ATL::CWindow>   CScrollBar;
  type CImageListT (line 1851) | typedef CImageListT<false>   CImageList;
  type CImageListT (line 1852) | typedef CImageListT<true>    CImageListManaged;
  function Attach (line 1878) | void Attach(HIMAGELIST hImageList)
  function HIMAGELIST (line 1885) | HIMAGELIST Detach()
  function COLORREF (line 1909) | COLORREF SetBkColor(COLORREF cr)
  function BOOL (line 1915) | BOOL GetImageInfo(int nImage, IMAGEINFO* pImageInfo) const
  function HICON (line 1921) | HICON GetIcon(int nIndex, UINT uFlags = ILD_NORMAL) const
  function BOOL (line 1927) | BOOL GetIconSize(int& cx, int& cy) const
  function BOOL (line 1933) | BOOL GetIconSize(SIZE& size) const
  function BOOL (line 1939) | BOOL SetIconSize(int cx, int cy)
  function BOOL (line 1945) | BOOL SetIconSize(SIZE size)
  function BOOL (line 1951) | BOOL SetImageCount(UINT uNewCount)
  function BOOL (line 1957) | BOOL SetOverlayImage(int nImage, int nOverlay)
  function BOOL (line 1964) | BOOL Create(int cx, int cy, UINT nFlags, int nInitial, int nGrow)
  function BOOL (line 1971) | BOOL Create(ATL::_U_STRINGorID bitmap, int cx, int nGrow, COLORREF crMask)
  function BOOL (line 1985) | BOOL Merge(HIMAGELIST hImageList1, int nImage1, HIMAGELIST hImageList2, ...
  function BOOL (line 1993) | BOOL CreateFromStream(LPSTREAM lpStream)
  function BOOL (line 2001) | BOOL Destroy()
  function Add (line 2017) | int Add(HBITMAP hBitmap, COLORREF crMask)
  function BOOL (line 2023) | BOOL Remove(int nImage)
  function BOOL (line 2029) | BOOL RemoveAll()
  function BOOL (line 2035) | BOOL Replace(int nImage, HBITMAP hBitmap, HBITMAP hBitmapMask)
  function AddIcon (line 2041) | int AddIcon(HICON hIcon)
  function ReplaceIcon (line 2047) | int ReplaceIcon(int nImage, HICON hIcon)
  function HICON (line 2053) | HICON ExtractIcon(int nImage)
  function BOOL (line 2059) | BOOL Draw(HDC hDC, int nImage, int x, int y, UINT nStyle)
  function BOOL (line 2066) | BOOL Draw(HDC hDC, int nImage, POINT pt, UINT nStyle)
  function BOOL (line 2073) | BOOL DrawEx(int nImage, HDC hDC, int x, int y, int dx, int dy, COLORREF ...
  function BOOL (line 2080) | BOOL DrawEx(int nImage, HDC hDC, RECT& rect, COLORREF rgbBk, COLORREF rg...
  function BOOL (line 2087) | static BOOL DrawIndirect(IMAGELISTDRAWPARAMS* pimldp)
  function BOOL (line 2092) | BOOL Copy(int nSrc, int nDst, UINT uFlags = ILCF_MOVE)
  function HIMAGELIST (line 2099) | static HIMAGELIST Read(LPSTREAM lpStream)
  function BOOL (line 2104) | BOOL Write(LPSTREAM lpStream)
  function HRESULT (line 2110) | static HRESULT ReadEx(DWORD dwFlags, LPSTREAM lpStream, REFIID riid, PVO...
  function HRESULT (line 2115) | HRESULT WriteEx(DWORD dwFlags, LPSTREAM lpStream)
  function BOOL (line 2123) | BOOL BeginDrag(int nImage, POINT ptHotSpot)
  function BOOL (line 2129) | BOOL BeginDrag(int nImage, int xHotSpot, int yHotSpot)
  function EndDrag (line 2135) | static void EndDrag()
  function BOOL (line 2140) | static BOOL DragMove(POINT pt)
  function BOOL (line 2145) | static BOOL DragMove(int x, int y)
  function BOOL (line 2150) | BOOL SetDragCursorImage(int nDrag, POINT ptHotSpot)
  function BOOL (line 2156) | BOOL SetDragCursorImage(int nDrag, int xHotSpot, int yHotSpot)
  function CImageList (line 2167) | static CImageList GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot)
  function BOOL (line 2172) | static BOOL DragEnter(HWND hWnd, POINT point)
  function BOOL (line 2177) | static BOOL DragEnter(HWND hWnd, int x, int y)
  function BOOL (line 2182) | static BOOL DragLeave(HWND hWnd)
  function CImageList (line 2193) | static CImageList Duplicate(HIMAGELIST hImageList)
  function class (line 2204) | class CToolInfo : public TOOLINFO
  function operator (line 2212) | operator LPTOOLINFO() { return this; }
  function operator (line 2214) | operator LPARAM() { return (LPARAM)this; }
  function LPCTSTR (line 2263) | static LPCTSTR GetWndClassName()
  function GetText (line 2268) | void GetText(LPTOOLINFO lpToolInfo) const
  function BOOL (line 2282) | BOOL GetToolInfo(LPTOOLINFO lpToolInfo) const
  function BOOL (line 2288) | BOOL GetToolInfo(HWND hWnd, UINT_PTR nIDTool, UINT* puFlags, LPRECT lpRe...
  function SetToolInfo (line 2304) | void SetToolInfo(LPTOOLINFO lpToolInfo)
  function SetToolRect (line 2310) | void SetToolRect(LPTOOLINFO lpToolInfo)
  function SetToolRect (line 2316) | void SetToolRect(HWND hWnd, UINT_PTR nIDTool, LPCRECT lpRect)
  function GetToolCount (line 2326) | int GetToolCount() const
  function SetDelayTime (line 2338) | void SetDelayTime(DWORD dwType, int nTime)
  function GetMargin (line 2344) | void GetMargin(LPRECT lpRect) const
  function SetMargin (line 2350) | void SetMargin(LPRECT lpRect)
  function GetMaxTipWidth (line 2356) | int GetMaxTipWidth() const
  function COLORREF (line 2368) | COLORREF GetTipBkColor() const
  function COLORREF (line 2380) | COLORREF GetTipTextColor() const
  function BOOL (line 2392) | BOOL GetCurrentTool(LPTOOLINFO lpToolInfo) const
  function SIZE (line 2398) | SIZE GetBubbleSize(LPTOOLINFO lpToolInfo) const
  function BOOL (line 2406) | BOOL SetTitle(UINT_PTR uIcon, LPCTSTR lpstrTitle)
  function BOOL (line 2413) | BOOL SetTitle(HICON hIcon, LPCTSTR lpstrTitle)
  function GetTitle (line 2419) | void GetTitle(PTTGETTITLE pTTGetTitle) const
  function SetWindowTheme (line 2425) | void SetWindowTheme(LPCWSTR lpstrTheme)
  function Activate (line 2432) | void Activate(BOOL bActivate)
  function BOOL (line 2438) | BOOL AddTool(LPTOOLINFO lpToolInfo)
  function DelTool (line 2455) | void DelTool(LPTOOLINFO lpToolInfo)
  function BOOL (line 2470) | BOOL HitTest(LPTTHITTESTINFO lpHitTestInfo) const
  function BOOL (line 2476) | BOOL HitTest(HWND hWnd, POINT pt, LPTOOLINFO lpToolInfo) const
  function RelayEvent (line 2495) | void RelayEvent(LPMSG lpMsg)
  function UpdateTipText (line 2501) | void UpdateTipText(LPTOOLINFO lpToolInfo)
  function BOOL (line 2516) | BOOL EnumTools(UINT_PTR nTool, LPTOOLINFO lpToolInfo) const
  function Pop (line 2522) | void Pop()
  function TrackActivate (line 2528) | void TrackActivate(LPTOOLINFO lpToolInfo, BOOL bActivate)
  function TrackActivate (line 2534) | void TrackActivate(HWND hWnd, UINT_PTR nIDTool, BOOL bActivate)
  function TrackPosition (line 2543) | void TrackPosition(int xPos, int yPos)
  function Update (line 2549) | void Update()
  function BOOL (line 2555) | BOOL AdjustRect(LPRECT lpRect, BOOL bLarger /*= TRUE*/)
  function Popup (line 2561) | void Popup()
  type CToolTipCtrlT (line 2568) | typedef CToolTipCtrlT<ATL::CWindow>   CToolTipCtrl;
  function LPCTSTR (line 2596) | static LPCTSTR GetWndClassName()
  function GetItemCount (line 2601) | int GetItemCount() const
  function BOOL (line 2613) | BOOL SetItem(int nIndex, LPHDITEM pHeaderItem)
  function CImageList (line 2619) | CImageList GetImageList() const
  function BOOL (line 2643) | BOOL GetItemRect(int nIndex, LPRECT lpItemRect) const
  function SetHotDivider (line 2649) | int SetHotDivider(BOOL bPos, DWORD dwInputValue)
  function BOOL (line 2655) | BOOL GetUnicodeFormat() const
  function SetBitmapMargin (line 2673) | int SetBitmapMargin(int nWidth)
  function SetFilterChangeTimeout (line 2679) | int SetFilterChangeTimeout(DWORD dwTimeOut)
  function BOOL (line 2686) | BOOL GetItemDropDownRect(int nIndex, LPRECT lpRect) const
  function BOOL (line 2692) | BOOL GetOverflowRect(LPRECT lpRect) const
  function GetFocusedItem (line 2698) | int GetFocusedItem() const
  function InsertItem (line 2712) | int InsertItem(int nIndex, LPHDITEM phdi)
  function AddItem (line 2718) | int AddItem(LPHDITEM phdi)
  function BOOL (line 2723) | BOOL DeleteItem(int nIndex)
  function BOOL (line 2729) | BOOL Layout(HD_LAYOUT* pHeaderLayout)
  function HitTest (line 2735) | int HitTest(LPHDHITTESTINFO lpHitTestInfo) const
  function OrderToIndex (line 2741) | int OrderToIndex(int nOrder)
  function CImageList (line 2747) | CImageList CreateDragImage(int nIndex)
  function EditFilter (line 2753) | int EditFilter(int nColumn, BOOL bDiscardChanges)
  function ClearFilter (line 2759) | int ClearFilter(int nColumn)
  function ClearAllFilters (line 2765) | int ClearAllFilters()
  type CHeaderCtrlT (line 2772) | typedef CHeaderCtrlT<ATL::CWindow>   CHeaderCtrl;
  function LPCTSTR (line 2800) | static LPCTSTR GetWndClassName()
  function COLORREF (line 2805) | COLORREF GetBkColor() const
  function CImageList (line 2817) | CImageList GetImageList(int nImageListType) const
  function CImageList (line 2823) | CImageList SetImageList(HIMAGELIST hImageList, int nImageList)
  function GetItemCount (line 2829) | int GetItemCount() const
  function BOOL (line 2841) | BOOL GetItem(LPLVITEM pItem) const
  function BOOL (line 2847) | BOOL SetItem(const LVITEM* pItem)
  function BOOL (line 2853) | BOOL SetItem(int nItem, int nSubItem, UINT nMask, LPCTSTR lpszItem,
  function UINT (line 2869) | UINT GetItemState(int nItem, UINT nMask) const
  function BOOL (line 2875) | BOOL SetItemState(int nItem, UINT nState, UINT nStateMask)
  function BOOL (line 2884) | BOOL SetItemState(int nItem, LPLVITEM pItem)
  function BOOL (line 2890) | BOOL GetItemText(int nItem, int nSubItem, BSTR& bstrText) const
  function GetItemText (line 2926) | int GetItemText(int nItem, int nSubItem, ATL::CString& strText) const
  function GetItemText (line 2952) | int GetItemText(int nItem, int nSubItem, LPTSTR lpszText, int nLen) const
  function BOOL (line 2962) | BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText)
  function DWORD_PTR (line 2968) | DWORD_PTR GetItemData(int nItem) const
  function BOOL (line 2978) | BOOL SetItemData(int nItem, DWORD_PTR dwData)
  function UINT (line 2984) | UINT GetCallbackMask() const
  function BOOL (line 2996) | BOOL GetItemPosition(int nItem, LPPOINT lpPoint) const
  function BOOL (line 3002) | BOOL SetItemPosition(int nItem, POINT pt)
  function BOOL (line 3009) | BOOL SetItemPosition(int nItem, int x, int y)
  function GetStringWidth (line 3017) | int GetStringWidth(LPCTSTR lpsz) const
  function CEdit (line 3023) | CEdit GetEditControl() const
  function GetColumnWidth (line 3041) | int GetColumnWidth(int nCol) const
  function BOOL (line 3047) | BOOL SetColumnWidth(int nCol, int cx)
  function BOOL (line 3053) | BOOL GetViewRect(LPRECT lpRect) const
  function COLORREF (line 3059) | COLORREF GetTextColor() const
  function COLORREF (line 3071) | COLORREF GetTextBkColor() const
  function GetTopIndex (line 3083) | int GetTopIndex() const
  function BOOL (line 3095) | BOOL GetOrigin(LPPOINT lpPoint) const
  function UINT (line 3101) | UINT GetSelectedCount() const
  function HCURSOR (line 3114) | HCURSOR GetHotCursor() const
  function GetHotItem (line 3126) | int GetHotItem() const
  function BOOL (line 3138) | BOOL GetColumnOrderArray(int nCount, int* lpnArray) const
  function BOOL (line 3144) | BOOL SetColumnOrderArray(int nCount, int* lpnArray)
  function CHeaderCtrl (line 3150) | CHeaderCtrl GetHeader() const
  function GetISearchString (line 3173) | int GetISearchString(LPTSTR lpstr) const
  function GetSelectedIndex (line 3188) | int GetSelectedIndex() const
  function DWORD (line 3207) | DWORD GetExtendedListViewStyle() const
  function BOOL (line 3229) | BOOL SetCheckState(int nItem, BOOL bCheck)
  function DWORD (line 3236) | DWORD GetViewType() const
  function BOOL (line 3252) | BOOL GetBkImage(LPLVBKIMAGE plvbki) const
  function BOOL (line 3258) | BOOL SetBkImage(LPLVBKIMAGE plvbki)
  function GetSelectionMark (line 3264) | int GetSelectionMark() const
  function BOOL (line 3276) | BOOL GetWorkAreas(int nWorkAreas, LPRECT lpRect) const
  function BOOL (line 3282) | BOOL SetWorkAreas(int nWorkAreas, LPRECT lpRect)
  function DWORD (line 3288) | DWORD GetHoverTime() const
  function BOOL (line 3302) | BOOL GetNumberOfWorkAreas(int* pnWorkAreas) const
  function BOOL (line 3308) | BOOL SetItemCountEx(int nItems, DWORD dwFlags)
  function CToolTipCtrl (line 3315) | CToolTipCtrl GetToolTips() const
  function SetSelectedColumn (line 3345) | void SetSelectedColumn(int nColumn)
  function DWORD (line 3351) | DWORD GetView() const
  function BOOL (line 3363) | BOOL IsGroupViewEnabled() const
  function SetGroupInfo (line 3375) | int SetGroupInfo(int nGroupID, PLVGROUP pGroup)
  function GetGroupMetrics (line 3381) | void GetGroupMetrics(PLVGROUPMETRICS pGroupMetrics) const
  function SetGroupMetrics (line 3387) | void SetGroupMetrics(PLVGROUPMETRICS pGroupMetrics)
  function GetTileViewInfo (line 3393) | void GetTileViewInfo(PLVTILEVIEWINFO pTileViewInfo) const
  function BOOL (line 3399) | BOOL SetTileViewInfo(PLVTILEVIEWINFO pTileViewInfo)
  function GetTileInfo (line 3405) | void GetTileInfo(PLVTILEINFO pTileInfo) const
  function BOOL (line 3411) | BOOL SetTileInfo(PLVTILEINFO pTileInfo)
  function BOOL (line 3417) | BOOL GetInsertMark(LPLVINSERTMARK pInsertMark) const
  function BOOL (line 3423) | BOOL SetInsertMark(LPLVINSERTMARK pInsertMark)
  function GetInsertMarkRect (line 3429) | int GetInsertMarkRect(LPRECT lpRect) const
  function COLORREF (line 3435) | COLORREF GetInsertMarkColor() const
  function COLORREF (line 3447) | COLORREF GetOutlineColor() const
  function GetGroupCount (line 3460) | int GetGroupCount() const
  function BOOL (line 3472) | BOOL GetGroupRect(int nGroupID, int nType, LPRECT lpRect) const
  function UINT (line 3481) | UINT GetGroupState(int nGroupID, UINT uMask) const
  function GetFocusedGroup (line 3487) | int GetFocusedGroup() const
  function BOOL (line 3499) | BOOL GetFooterRect(LPRECT lpRect) const
  function BOOL (line 3505) | BOOL GetFooterInfo(LPLVFOOTERINFO lpFooterInfo) const
  function BOOL (line 3511) | BOOL GetFooterItemRect(int nItem, LPRECT lpRect) const
  function BOOL (line 3517) | BOOL GetFooterItem(int nItem, LPLVFOOTERITEM lpFooterItem) const
  function BOOL (line 3523) | BOOL GetItemIndexRect(PLVITEMINDEX pItemIndex, int nSubItem, int nType, ...
  function BOOL (line 3536) | BOOL SetItemIndexState(PLVITEMINDEX pItemIndex, UINT uState, UINT dwMask)
  function BOOL (line 3545) | BOOL GetNextItemIndex(PLVITEMINDEX pItemIndex, WORD wFlags) const
  function InsertColumn (line 3553) | int InsertColumn(int nCol, const LVCOLUMN* pColumn)
  function BOOL (line 3589) | BOOL DeleteColumn(int nCol)
  function InsertItem (line 3595) | int InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState, UIN...
  function InsertItem (line 3610) | int InsertItem(const LVITEM* pItem)
  function InsertItem (line 3616) | int InsertItem(int nItem, LPCTSTR lpszItem)
  function InsertItem (line 3622) | int InsertItem(int nItem, LPCTSTR lpszItem, int nImage)
  function GetNextItem (line 3628) | int GetNextItem(int nItem, int nFlags) const
  function BOOL (line 3634) | BOOL DeleteItem(int nItem)
  function BOOL (line 3640) | BOOL DeleteAllItems()
  function HitTest (line 3661) | int HitTest(LVHITTESTINFO* pHitTestInfo) const
  function HitTest (line 3667) | int HitTest(POINT pt, UINT* pFlags) const
  function BOOL (line 3678) | BOOL EnsureVisible(int nItem, BOOL bPartialOK)
  function BOOL (line 3684) | BOOL Scroll(int cx, int cy)
  function BOOL (line 3690) | BOOL Scroll(SIZE size)
  function BOOL (line 3696) | BOOL RedrawItems(int nFirst, int nLast)
  function BOOL (line 3702) | BOOL Arrange(UINT nCode)
  function CEdit (line 3708) | CEdit EditLabel(int nItem)
  function BOOL (line 3714) | BOOL Update(int nItem)
  function BOOL (line 3720) | BOOL SortItems(PFNLVCOMPARE pfnCompare, LPARAM lParamSort)
  function CImageList (line 3726) | CImageList RemoveImageList(int nImageList)
  function CImageList (line 3732) | CImageList CreateDragImage(int nItem, LPPOINT lpPoint)
  function SubItemHitTest (line 3744) | int SubItemHitTest(LPLVHITTESTINFO lpInfo) const
  function BOOL (line 3784) | BOOL SortItemsEx(PFNLVCOMPARE pfnCompare, LPARAM lParamSort)
  function InsertGroup (line 3790) | int InsertGroup(int nItem, PLVGROUP pGroup)
  function AddGroup (line 3796) | int AddGroup(PLVGROUP pGroup)
  function RemoveGroup (line 3801) | int RemoveGroup(int nGroupID)
  function MoveGroup (line 3807) | void MoveGroup(int nGroupID, int nItem)
  function MoveItemToGroup (line 3813) | void MoveItemToGroup(int nItem, int nGroupID)
  function EnableGroupView (line 3819) | int EnableGroupView(BOOL bEnable)
  function InsertGroupSorted (line 3831) | void InsertGroupSorted(PLVINSERTGROUPSORTED pInsertGroupSorted)
  function RemoveAllGroups (line 3837) | void RemoveAllGroups()
  function BOOL (line 3843) | BOOL HasGroup(int nGroupID)
  function BOOL (line 3849) | BOOL InsertMarkHitTest(LPPOINT lpPoint, LPLVINSERTMARK pInsertMark) const
  function BOOL (line 3855) | BOOL SetInfoTip(PLVSETINFOTIP pSetInfoTip)
  function CancelEditLabel (line 3861) | void CancelEditLabel()
  function UINT (line 3867) | UINT MapIndexToID(int nIndex) const
  function MapIDToIndex (line 3873) | int MapIDToIndex(UINT uID) const
  function BOOL (line 3879) | BOOL IsItemVisible(int nItem) const
  function HitTestEx (line 3886) | int HitTestEx(LPLVHITTESTINFO lpHitTestInfo) const
  function HitTestEx (line 3892) | int HitTestEx(POINT pt, UINT* pFlags) const
  function SubItemHitTestEx (line 3903) | int SubItemHitTestEx(LPLVHITTESTINFO lpHitTestInfo) const
  function BOOL (line 3911) | BOOL SelectItem(int nIndex)   // -1 to select none
  type CListViewCtrlT (line 3947) | typedef CListViewCtrlT<ATL::CWindow>   CListViewCtrl;
  function LPCTSTR (line 3975) | static LPCTSTR GetWndClassName()
  function UINT (line 3980) | UINT GetCount() const
  function SetIndent (line 3992) | void SetIndent(UINT nIndent)
  function CImageList (line 3998) | CImageList GetImageList(int nImageListType = TVSIL_NORMAL) const
  function CImageList (line 4004) | CImageList SetImageList(HIMAGELIST hImageList, int nImageListType = TVSI...
  function BOOL (line 4010) | BOOL GetItem(LPTVITEM pItem) const
  function BOOL (line 4016) | BOOL SetItem(LPTVITEM pItem)
  function BOOL (line 4022) | BOOL SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR lpszItem, int nImage,
  function BOOL (line 4038) | BOOL GetItemText(HTREEITEM hItem, LPTSTR lpstrText, int nLen) const
  function BOOL (line 4052) | BOOL GetItemText(HTREEITEM hItem, BSTR& bstrText) const
  function BOOL (line 4089) | BOOL GetItemText(HTREEITEM hItem, ATL::CString& strText) const
  function BOOL (line 4116) | BOOL SetItemText(HTREEITEM hItem, LPCTSTR lpszItem)
  function BOOL (line 4122) | BOOL GetItemImage(HTREEITEM hItem, int& nImage, int& nSelectedImage) const
  function BOOL (line 4137) | BOOL SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage)
  function UINT (line 4143) | UINT GetItemState(HTREEITEM hItem, UINT nStateMask) const
  function BOOL (line 4149) | BOOL SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask)
  function DWORD_PTR (line 4155) | DWORD_PTR GetItemData(HTREEITEM hItem) const
  function BOOL (line 4165) | BOOL SetItemData(HTREEITEM hItem, DWORD_PTR dwData)
  function CEdit (line 4171) | CEdit GetEditControl() const
  function BOOL (line 4190) | BOOL ItemHasChildren(HTREEITEM hItem) const
  function CToolTipCtrl (line 4200) | CToolTipCtrl GetToolTips() const
  function BOOL (line 4219) | BOOL GetCheckState(HTREEITEM hItem) const
  function BOOL (line 4227) | BOOL SetCheckState(HTREEITEM hItem, BOOL bCheck)
  function UINT (line 4236) | UINT GetCheckStateEx(HTREEITEM hItem) const
  function BOOL (line 4244) | BOOL SetCheckStateEx(HTREEITEM hItem, UINT uCheckState)
  function COLORREF (line 4252) | COLORREF GetBkColor() const
  function COLORREF (line 4264) | COLORREF GetInsertMarkColor() const
  function GetItemHeight (line 4276) | int GetItemHeight() const
  function GetScrollTime (line 4288) | int GetScrollTime() const
  function COLORREF (line 4300) | COLORREF GetTextColor() const
  function BOOL (line 4312) | BOOL GetUnicodeFormat() const
  function COLORREF (line 4330) | COLORREF SetLineColor(COLORREF clrNew /*= CLR_DEFAULT*/)
  function BOOL (line 4336) | BOOL GetItem(LPTVITEMEX pItem) const
  function BOOL (line 4342) | BOOL SetItem(LPTVITEMEX pItem)
  function DWORD (line 4348) | DWORD GetExtendedStyle() const
  function BOOL (line 4361) | BOOL SetAutoScrollInfo(UINT uPixPerSec, UINT uUpdateTime)
  function DWORD (line 4367) | DWORD GetSelectedCount() const
  function HTREEITEM (line 4382) | HTREEITEM InsertItem(LPTVINSERTSTRUCT lpInsertStruct)
  function HTREEITEM (line 4388) | HTREEITEM InsertItem(LPCTSTR lpszItem, int nImage,
  function HTREEITEM (line 4395) | HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent, HTREEITEM hIns...
  function HTREEITEM (line 4401) | HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage,
  function BOOL (line 4419) | BOOL DeleteItem(HTREEITEM hItem)
  function BOOL (line 4425) | BOOL DeleteAllItems()
  function BOOL (line 4431) | BOOL Expand(HTREEITEM hItem, UINT nCode = TVE_EXPAND)
  function HTREEITEM (line 4437) | HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode) const
  function HTREEITEM (line 4443) | HTREEITEM GetChildItem(HTREEITEM hItem) const
  function HTREEITEM (line 4449) | HTREEITEM GetNextSiblingItem(HTREEITEM hItem) const
  function HTREEITEM (line 4455) | HTREEITEM GetPrevSiblingItem(HTREEITEM hItem) const
  function HTREEITEM (line 4461) | HTREEITEM GetParentItem(HTREEITEM hItem) const
  function HTREEITEM (line 4467) | HTREEITEM GetFirstVisibleItem() const
  function HTREEITEM (line 4479) | HTREEITEM GetPrevVisibleItem(HTREEITEM hItem) const
  function HTREEITEM (line 4485) | HTREEITEM GetSelectedItem() const
  function HTREEITEM (line 4497) | HTREEITEM GetRootItem() const
  function HTREEITEM (line 4509) | HTREEITEM GetNextSelectedItem(HTREEITEM hItem) const
  function BOOL (line 4515) | BOOL Select(HTREEITEM hItem, UINT nCode)
  function BOOL (line 4521) | BOOL SelectItem(HTREEITEM hItem)
  function BOOL (line 4527) | BOOL SelectDropTarget(HTREEITEM hItem)
  function BOOL (line 4533) | BOOL SelectSetFirstVisible(HTREEITEM hItem)
  function CEdit (line 4539) | CEdit EditLabel(HTREEITEM hItem)
  function BOOL (line 4545) | BOOL EndEditLabelNow(BOOL bCancel)
  function HTREEITEM (line 4551) | HTREEITEM HitTest(TVHITTESTINFO* pHitTestInfo) const
  function HTREEITEM (line 4557) | HTREEITEM HitTest(POINT pt, UINT* pFlags) const
  function BOOL (line 4574) | BOOL EnsureVisible(HTREEITEM hItem)
  function CImageList (line 4586) | CImageList RemoveImageList(int nImageList)
  function CImageList (line 4592) | CImageList CreateDragImage(HTREEITEM hItem)
  function BOOL (line 4598) | BOOL SetInsertMark(HTREEITEM hTreeItem, BOOL bAfter)
  function BOOL (line 4604) | BOOL RemoveInsertMark()
  function HTREEITEM (line 4610) | HTREEITEM MapAccIDToHTREEITEM(UINT uID) const
  function UINT (line 4616) | UINT MapHTREEITEMToAccID(HTREEITEM hTreeItem) const
  function ShowInfoTip (line 4623) | void ShowInfoTip(HTREEITEM hItem)
  type CTreeViewCtrlT (line 4631) | typedef CTreeViewCtrlT<ATL::CWindow>   CTreeViewCtrl;
  function operator (line 4657) | operator HTREEITEM() { return m_hTreeItem; }
  function GetImageIndex (line 4729) | int GetImageIndex() const;
  function LPCTSTR (line 5258) | static LPCTSTR GetWndClassName()
  function BOOL (line 5263) | BOOL IsButtonEnabled(int nID) const
  function BOOL (line 5269) | BOOL IsButtonChecked(int nID) const
  function BOOL (line 5275) | BOOL IsButtonPressed(int nID) const
  function BOOL (line 5281) | BOOL IsButtonHidden(int nID) const
  function BOOL (line 5287) | BOOL IsButtonIndeterminate(int nID) const
  function GetState (line 5293) | int GetState(int nID) const
  function BOOL (line 5299) | BOOL SetState(int nID, UINT nState)
  function BOOL (line 5305) | BOOL GetButton(int nIndex, LPTBBUTTON lpButton) const
  function GetButtonCount (line 5311) | int GetButtonCount() const
  function BOOL (line 5329) | BOOL SetButtonSize(SIZE size)
  function BOOL (line 5335) | BOOL SetButtonSize(int cx, int cy)
  function BOOL (line 5341) | BOOL SetBitmapSize(SIZE size)
  function BOOL (line 5347) | BOOL SetBitmapSize(int cx, int cy)
  function CToolTipCtrl (line 5353) | CToolTipCtrl GetToolTips() const
  function SetNotifyWnd (line 5365) | void SetNotifyWnd(HWND hWnd)
  function GetRows (line 5371) | int GetRows() const
  function BOOL (line 5383) | BOOL SetCmdID(int nIndex, UINT nID)
  function DWORD (line 5389) | DWORD GetBitmapFlags() const
  function GetButtonText (line 5401) | int GetButtonText(int nID, LPTSTR lpstrText) const
  function SetStyle (line 5455) | void SetStyle(DWORD dwStyle)
  function DWORD (line 5461) | DWORD GetButtonSize() const
  function BOOL (line 5475) | BOOL GetRect(int nID, LPRECT lpRect) const
  function GetTextRows (line 5481) | int GetTextRows() const
  function BOOL (line 5493) | BOOL SetIndent(int nIndent)
  function BOOL (line 5499) | BOOL SetMaxTextRows(int nMaxTextRows)
  function BOOL (line 5505) | BOOL GetAnchorHighlight() const
  function BOOL (line 5523) | BOOL SetButtonInfo(int nID, LPTBBUTTONINFO lptbbi)
  function BOOL (line 5529) | BOOL SetButtonInfo(int nID, DWORD dwMask, BYTE Style, BYTE State, LPCTST...
  function GetHotItem (line 5546) | int GetHotItem() const
  function BOOL (line 5558) | BOOL IsButtonHighlighted(int nButtonID) const
  function DWORD (line 5564) | DWORD SetDrawTextFlags(DWORD dwMask, DWORD dwFlags)
  function BOOL (line 5570) | BOOL GetColorScheme(LPCOLORSCHEME lpcs) const
  function SetColorScheme (line 5576) | void SetColorScheme(LPCOLORSCHEME lpcs)
  function DWORD (line 5582) | DWORD GetExtendedStyle() const
  function GetInsertMark (line 5594) | void GetInsertMark(LPTBINSERTMARK lptbim) const
  function SetInsertMark (line 5600) | void SetInsertMark(LPTBINSERTMARK lptbim)
  function COLORREF (line 5606) | COLORREF GetInsertMarkColor() const
  function BOOL (line 5618) | BOOL GetMaxSize(LPSIZE lpSize) const
  function GetPadding (line 5624) | void GetPadding(LPSIZE lpSizePadding) const
  function GetString (line 5656) | int GetString(int nString, LPTSTR lpstrString, int cchMaxLen) const
  function GetStringBSTR (line 5662) | int GetStringBSTR(int nString, BSTR& bstrString) const
  function GetString (line 5688) | int GetString(int nString, ATL::CString& str) const
  function GetMetrics (line 5705) | void GetMetrics(LPTBMETRICS lptbm) const
  function SetMetrics (line 5711) | void SetMetrics(LPTBMETRICS lptbm)
  function SetWindowTheme (line 5717) | void SetWindowTheme(LPCWSTR lpstrTheme)
  function GetItemDropDownRect (line 5736) | void GetItemDropDownRect(int nIndex, LPRECT lpRect) const
  function AddBitmap (line 5779) | int AddBitmap(int nNumButtons, UINT nBitmapID)
  function AddBitmap (line 5789) | int AddBitmap(int nNumButtons, HBITMAP hBitmap)
  function BOOL (line 5798) | BOOL AddButtons(int nNumButtons, LPCTBBUTTON lpButtons)
  function BOOL (line 5804) | BOOL InsertButton(int nIndex, LPCTBBUTTON lpButton)
  function BOOL (line 5810) | BOOL InsertButton(int nIndex, int iCommand, BYTE Style, BYTE State, int ...
  function BOOL (line 5824) | BOOL InsertButton(int nIndex, int iCommand, BYTE Style, BYTE State, int ...
  function BOOL (line 5830) | BOOL AddButton(LPTBBUTTON lpButton)
  function BOOL (line 5835) | BOOL AddButton(int iCommand, BYTE Style, BYTE State, int iBitmap, INT_PT...
  function BOOL (line 5840) | BOOL AddButton(int iCommand, BYTE Style, BYTE State, int iBitmap, LPCTST...
  function BOOL (line 5845) | BOOL DeleteButton(int nIndex)
  function CommandToIndex (line 5861) | int CommandToIndex(UINT nID) const
  function SaveState (line 5867) | void SaveState(HKEY hKeyRoot, LPCTSTR lpszSubKey, LPCTSTR lpszValueName)
  function RestoreState (line 5877) | void RestoreState(HKEY hKeyRoot, LPCTSTR lpszSubKey, LPCTSTR lpszValueName)
  function Customize (line 5887) | void Customize()
  function AddString (line 5893) | int AddString(UINT nStringID)
  function AddStrings (line 5899) | int AddStrings(LPCTSTR lpszStrings)
  function AutoSize (line 5905) | void AutoSize()
  function BOOL (line 5911) | BOOL ChangeBitmap(int nID, int nBitmap)
  function LoadImages (line 5917) | int LoadImages(int nBitmapID)
  function LoadStdImages (line 5923) | int LoadStdImages(int nBitmapID)
  function BOOL (line 5929) | BOOL ReplaceBitmap(LPTBREPLACEBITMAP ptbrb)
  function HitTest (line 5935) | int HitTest(LPPOINT lpPoint) const
  function BOOL (line 5941) | BOOL InsertMarkHitTest(LPPOINT lpPoint, LPTBINSERTMARK lptbim) const
  function BOOL (line 5947) | BOOL InsertMarkHitTest(int x, int y, LPTBINSERTMARK lptbim) const
  function BOOL (line 5954) | BOOL MapAccelerator(TCHAR chAccel, int& nID) const
  function BOOL (line 5966) | BOOL MoveButton(int nOldPos, int nNewPos)
  function HRESULT (line 5972) | HRESULT GetObject(REFIID iid, LPVOID* ppvObject)
  type CToolBarCtrlT (line 5979) | typedef CToolBarCtrlT<ATL::CWindow>   CToolBarCtrl;
  function LPCTSTR (line 6007) | static LPCTSTR GetWndClassName()
  function GetParts (line 6012) | int GetParts(int nParts, int* pParts) const
  function BOOL (line 6018) | BOOL SetParts(int nParts, int* pWidths)
  function BOOL (line 6089) | BOOL GetRect(int nPane, LPRECT lpRect) const
  function BOOL (line 6096) | BOOL GetBorders(int* pBorders) const
  function BOOL (line 6102) | BOOL GetBorders(int& nHorz, int& nVert, int& nSpacing) const
  function SetMinHeight (line 6116) | void SetMinHeight(int nMin)
  function BOOL (line 6134) | BOOL GetUnicodeFormat() const
  function SetTipText (line 6153) | void SetTipText(int nPane, LPCTSTR lpstrText)
  function COLORREF (line 6160) | COLORREF SetBkColor(COLORREF clrBk)
  function HICON (line 6166) | HICON GetIcon(int nPane) const
  function BOOL (line 6173) | BOOL SetIcon(int nPane, HICON hIcon)
  type CStatusBarCtrlT (line 6181) | typedef CStatusBarCtrlT<ATL::CWindow>   CStatusBarCtrl;
  function LPCTSTR (line 6209) | static LPCTSTR GetWndClassName()
  function CImageList (line 6214) | CImageList GetImageList() const
  function BOOL (line 6232) | BOOL GetItem(int nItem, LPTCITEM pTabCtrlItem) const
  function BOOL (line 6238) | BOOL SetItem(int nItem, LPTCITEM pTabCtrlItem)
  function SetItem (line 6244) | int SetItem(int nItem, UINT mask, LPCTSTR lpszItem, DWORD dwState, DWORD...
  function BOOL (line 6257) | BOOL GetItemRect(int nItem, LPRECT lpRect) const
  function GetCurSel (line 6263) | int GetCurSel() const
  function SIZE (line 6275) | SIZE SetItemSize(SIZE size)
  function SetItemSize (line 6283) | void SetItemSize(int cx, int cy)
  function SetPadding (line 6289) | void SetPadding(SIZE size)
  function GetRowCount (line 6295) | int GetRowCount() const
  function SetToolTips (line 6310) | void SetToolTips(HWND hWndToolTip)
  function SetTooltips (line 6317) | void SetTooltips(HWND hWndToolTip) { SetToolTips(hWndToolTip); }
  function GetCurFocus (line 6319) | int GetCurFocus() const
  function BOOL (line 6331) | BOOL SetItemExtra(int cbExtra)
  function DWORD (line 6350) | DWORD SetExtendedStyle(DWORD dwExMask, DWORD dwExStyle)
  function BOOL (line 6356) | BOOL GetUnicodeFormat() const
  function InsertItem (line 6375) | int InsertItem(int nItem, UINT mask, LPCTSTR lpszItem, int iImage, LPARA...
  function InsertItem (line 6386) | int InsertItem(int nItem, LPCTSTR lpszItem)
  function AddItem (line 6395) | int AddItem(LPTCITEM pTabCtrlItem)
  function AddItem (line 6400) | int AddItem(UINT mask, LPCTSTR lpszItem, int iImage, LPARAM lParam)
  function AddItem (line 6405) | int AddItem(LPCTSTR lpszItem)
  function BOOL (line 6410) | BOOL DeleteItem(int nItem)
  function BOOL (line 6416) | BOOL DeleteAllItems()
  function AdjustRect (line 6422) | void AdjustRect(BOOL bLarger, LPRECT lpRect)
  function RemoveImage (line 6428) | void RemoveImage(int nImage)
  function HitTest (line 6434) | int HitTest(TC_HITTESTINFO* pHitTestInfo) const
  type CTabCtrlT (line 6453) | typedef CTabCtrlT<ATL::CWindow>   CTabCtrl;
  function LPCTSTR (line 6481) | static LPCTSTR GetWndClassName()
  function GetLineSize (line 6486) | int GetLineSize() const
  function GetPageSize (line 6498) | int GetPageSize() const
  function GetRangeMin (line 6510) | int GetRangeMin() const
  function GetRange (line 6534) | void GetRange(int& nMin, int& nMax) const
  function GetSelStart (line 6546) | int GetSelStart() const
  function GetSelection (line 6570) | void GetSelection(int& nMin, int& nMax) const
  function GetChannelRect (line 6582) | void GetChannelRect(LPRECT lprc) const
  function GetThumbRect (line 6588) | void GetThumbRect(LPRECT lprc) const
  function GetPos (line 6594) | int GetPos() const
  function UINT (line 6606) | UINT GetNumTics() const
  function GetTic (line 6618) | int GetTic(int nTic) const
  function BOOL (line 6624) | BOOL SetTic(int nTic)
  function GetTicPos (line 6630) | int GetTicPos(int nTic) const
  function SetTicFreq (line 6636) | void SetTicFreq(int nFreq)
  function GetThumbLength (line 6642) | int GetThumbLength() const
  function SetToolTips (line 6679) | void SetToolTips(HWND hWndTT)
  function SetTipSide (line 6685) | int SetTipSide(int nSide)
  function BOOL (line 6691) | BOOL GetUnicodeFormat() const
  type CTrackBarCtrlT (line 6723) | typedef CTrackBarCtrlT<ATL::CWindow>   CTrackBarCtrl;
  function LPCTSTR (line 6751) | static LPCTSTR GetWndClassName()
  function UINT (line 6756) | UINT GetAccel(int nAccel, UDACCEL* pAccel) const
  function BOOL (line 6762) | BOOL SetAccel(int nAccel, UDACCEL* pAccel)
  function UINT (line 6768) | UINT GetBase() const
  function SetPos (line 6803) | int SetPos(int nPos)
  function DWORD (line 6809) | DWORD GetRange() const
  function SetRange (line 6823) | void SetRange(int nLower, int nUpper)
  function SetRange32 (line 6829) | void SetRange32(int nLower, int nUpper)
  function GetRange32 (line 6835) | void GetRange32(int& nLower, int& nUpper) const
  function BOOL (line 6841) | BOOL GetUnicodeFormat() const
  function SetPos32 (line 6861) | int SetPos32(int nPos)
  type CUpDownCtrlT (line 6868) | typedef CUpDownCtrlT<ATL::CWindow>   CUpDownCtrl;
  function LPCTSTR (line 6896) | static LPCTSTR GetWndClassName()
  function DWORD (line 6901) | DWORD SetRange(int nLower, int nUpper)
  function SetPos (line 6907) | int SetPos(int nPos)
  function OffsetPos (line 6913) | int OffsetPos(int nPos)
  function SetStep (line 6919) | int SetStep(int nStep)
  function UINT (line 6925) | UINT GetPos() const
  function GetRange (line 6938) | void GetRange(int& nLower, int& nUpper) const
  function GetRangeLimit (line 6947) | int GetRangeLimit(BOOL bLowLimit) const
  function DWORD (line 6953) | DWORD SetRange32(int nMin, int nMax)
  function COLORREF (line 6959) | COLORREF SetBarColor(COLORREF clr)
  function COLORREF (line 6965) | COLORREF SetBkColor(COLORREF clr)
  function GetStep (line 6980) | int GetStep() const
  function COLORREF (line 6992) | COLORREF GetBarColor() const
  function SetState (line 7004) | int SetState(int nState)
  function StepIt (line 7012) | int StepIt()
  type CProgressBarCtrlT (line 7019) | typedef CProgressBarCtrlT<ATL::CWindow>   CProgressBarCtrl;
  function LPCTSTR (line 7047) | static LPCTSTR GetWndClassName()
  function DWORD (line 7052) | DWORD GetHotKey() const
  function SetHotKey (line 7066) | void SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
  function SetRules (line 7072) | void SetRules(WORD wInvalidComb, WORD wModifiers)
  type CHotKeyCtrlT (line 7079) | typedef CHotKeyCtrlT<ATL::CWindow>   CHotKeyCtrl;
  function LPCTSTR (line 7107) | static LPCTSTR GetWndClassName()
  function BOOL (line 7113) | BOOL Open(ATL::_U_STRINGorID FileName)
  function BOOL (line 7119) | BOOL Play(UINT nFrom, UINT nTo, UINT nRep)
  function BOOL (line 7125) | BOOL Stop()
  function BOOL (line 7131) | BOOL Close()
  function BOOL (line 7137) | BOOL Seek(UINT nTo)
  function BOOL (line 7144) | BOOL IsPlaying() const
  function LPCTSTR (line 7184) | static LPCTSTR GetWndClassName()
  function LPCTSTR (line 7193) | static LPCTSTR GetLibraryName()
  function GetLineCount (line 7202) | int GetLineCount() const
  function GetRect (line 7220) | void GetRect(LPRECT lpRect) const
  function DWORD (line 7226) | DWORD GetOptions() const
  function GetLine (line 7239) | int GetLine(int nIndex, LPTSTR lpszBuffer) const
  function GetLine (line 7245) | int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const
  function BOOL (line 7252) | BOOL CanUndo() const
  function GetSel (line 7264) | void GetSel(LONG& nStartChar, LONG& nEndChar) const
  function GetSel (line 7273) | void GetSel(CHARRANGE &cr) const
  function SetSel (line 7279) | int SetSel(LONG nStartChar, LONG nEndChar)
  function SetSel (line 7286) | int SetSel(CHARRANGE &cr)
  function SetSelAll (line 7292) | int SetSelAll()
  function SetSelNone (line 7297) | int SetSelNone()
  function DWORD (line 7302) | DWORD GetDefaultCharFormat(CHARFORMAT& cf) const
  function DWORD (line 7309) | DWORD GetSelectionCharFormat(CHARFORMAT& cf) const
  function DWORD (line 7316) | DWORD GetEventMask() const
  function DWORD (line 7328) | DWORD GetParaFormat(PARAFORMAT& pf) const
  function LONG (line 7335) | LONG GetSelText(LPTSTR lpstrBuff) const
  function BOOL (line 7341) | BOOL GetSelTextBSTR(BSTR& bstrText) const
  function LONG (line 7363) | LONG GetSelText(ATL::CString& strText) const
  function WORD (line 7382) | WORD GetSelectionType() const
  function COLORREF (line 7394) | COLORREF SetBackgroundColor()   // sets to system background
  function BOOL (line 7400) | BOOL SetCharFormat(CHARFORMAT& cf, WORD wFlags)
  function BOOL (line 7407) | BOOL SetDefaultCharFormat(CHARFORMAT& cf)
  function BOOL (line 7414) | BOOL SetSelectionCharFormat(CHARFORMAT& cf)
  function BOOL (line 7421) | BOOL SetWordCharFormat(CHARFORMAT& cf)
  function DWORD (line 7428) | DWORD SetEventMask(DWORD dwEventMask)
  function BOOL (line 7434) | BOOL SetParaFormat(PARAFORMAT& pf)
  function BOOL (line 7441) | BOOL SetTargetDevice(HDC hDC, int cxLineWidth)
  function GetTextLength (line 7447) | int GetTextLength() const
  function GetTextRange (line 7465) | int GetTextRange(TEXTRANGE* pTextRange) const
  function GetTextRange (line 7471) | int GetTextRange(LONG nStartChar, LONG nEndChar, LPTSTR lpstrText) const
  function DWORD (line 7481) | DWORD GetDefaultCharFormat(CHARFORMAT2& cf) const
  function BOOL (line 7488) | BOOL SetCharFormat(CHARFORMAT2& cf, WORD wFlags)
  function BOOL (line 7495) | BOOL SetDefaultCharFormat(CHARFORMAT2& cf)
  function DWORD (line 7502) | DWORD GetSelectionCharFormat(CHARFORMAT2& cf) const
  function BOOL (line 7509) | BOOL SetSelectionCharFormat(CHARFORMAT2& cf)
  function BOOL (line 7516) | BOOL SetWordCharFormat(CHARFORMAT2& cf)
  function DWORD (line 7523) | DWORD GetParaFormat(PARAFORMAT2& pf) const
  function BOOL (line 7530) | BOOL SetParaFormat(PARAFORMAT2& pf)
  function TEXTMODE (line 7537) | TEXTMODE GetTextMode() const
  function UNDONAMEID (line 7549) | UNDONAMEID GetUndoName() const
  function BOOL (line 7561) | BOOL CanRedo() const
  function UINT (line 7582) | UINT SetUndoLimit(UINT uUndoLimit)
  function SetPalette (line 7588) | void SetPalette(HPALETTE hPalette)
  function GetTextEx (line 7594) | int GetTextEx(GETTEXTEX* pGetTextEx, LPTSTR lpstrText) const
  function GetTextLengthEx (line 7612) | int GetTextLengthEx(GETTEXTLENGTHEX* pGetTextLengthEx) const
  function GetTextLengthEx (line 7618) | int GetTextLengthEx(DWORD dwFlags = GTL_DEFAULT, UINT uCodePage = CP_ACP...
  function EDITWORDBREAKPROC (line 7627) | EDITWORDBREAKPROC GetWordBreakProc() const
  function SetTextEx (line 7639) | int SetTextEx(SETTEXTEX* pSetTextEx, LPCTSTR lpstrText)
  function SetTextEx (line 7645) | int SetTextEx(LPCTSTR lpstrText, DWORD dwFlags = ST_DEFAULT, UINT uCodeP...
  function GetEditStyle (line 7654) | int GetEditStyle() const
  function GetScrollPos (line 7675) | void GetScrollPos(LPPOINT lpPoint) const
  function SetScrollPos (line 7682) | void SetScrollPos(LPPOINT lpPoint)
  function BOOL (line 7689) | BOOL GetZoom(int& nNum, int& nDen) const
  function BOOL (line 7695) | BOOL SetZoom(int nNum, int nDen)
  function BOOL (line 7703) | BOOL SetZoomOff()
  function WORD (line 7715) | WORD GetTypographyOptions() const
  function LineFromChar (line 7734) | int LineFromChar(LONG nIndex) const
  function POINT (line 7740) | POINT PosFromChar(LONG nChar) const
  function CharFromPos (line 7748) | int CharFromPos(POINT pt) const
  function EmptyUndoBuffer (line 7755) | void EmptyUndoBuffer()
  function BOOL (line 7773) | BOOL LineScroll(int nLines)
  function SetRect (line 7785) | void SetRect(LPCRECT lpRect)
  function BOOL (line 7791) | BOOL DisplayBand(LPRECT pDisplayRect)
  function LONG (line 7797) | LONG FindText(DWORD dwFlags, FINDTEXT& ft) const
  function LONG (line 7807) | LONG FindText(DWORD dwFlags, FINDTEXTEX& ft) const
  function RequestResize (line 7842) | void RequestResize()
  function LONG (line 7848) | LONG StreamIn(UINT uFormat, EDITSTREAM& es)
  function LONG (line 7854) | LONG StreamOut(UINT uFormat, EDITSTREAM& es)
  function DWORD (line 7860) | DWORD FindWordBreak(int nCode, LONG nStartChar)
  function ScrollCaret (line 7867) | void ScrollCaret()
  function BOOL (line 7886) | BOOL Undo()
  function Clear (line 7892) | void Clear()
  function Copy (line 7898) | void Copy()
  function Cut (line 7904) | void Cut()
  function Paste (line 7910) | void Paste()
  function IRichEditOle (line 7917) | IRichEditOle* GetOleInterface() const
  function BOOL (line 7925) | BOOL SetOleCallback(IRichEditOleCallback* pCallback)
  function BOOL (line 7931) | BOOL Redo()
  function StopGroupTyping (line 7937) | void StopGroupTyping()
  function BOOL (line 7949) | BOOL SetTabStops(int nTabStops, LPINT rgTabStops)
  function BOOL (line 7955) | BOOL SetTabStops()
  function BOOL (line 7961) | BOOL SetTabStops(const int& cxEachStop)    // takes an 'int'
  function AutoCorrectProc (line 7968) | AutoCorrectProc GetAutoCorrectProc() const
  function BOOL (line 7980) | BOOL CallAutoCorrectProc(WCHAR ch)
  function DWORD (line 7986) | DWORD GetEditStyleEx() const
  function DWORD (line 7998) | DWORD GetStoryType(int nStoryIndex) const
  function DWORD (line 8004) | DWORD SetStoryType(int nStoryIndex, DWORD dwStoryType)
  function DWORD (line 8010) | DWORD GetEllipsisMode() const
  function BOOL (line 8028) | BOOL GetEllipsisState() const
  function SetTouchOptions (line 8040) | void SetTouchOptions(int nTouchOptions, BOOL bEnable)
  function HRESULT (line 8046) | HRESULT InsertTable(TABLEROWPARMS* pRowParams, TABLECELLPARMS* pCellParams)
  function HRESULT (line 8052) | HRESULT GetTableParams(TABLEROWPARMS* pRowParams, TABLECELLPARMS* pCellP...
  function HRESULT (line 8058) | HRESULT SetTableParams(TABLEROWPARMS* pRowParams, TABLECELLPARMS* pCellP...
  function HRESULT (line 8064) | HRESULT InsertImage(RICHEDIT_IMAGE_PARAMETERS* pParams)
  function BOOL (line 8070) | BOOL SetUiaName(LPCTSTR lpstrName)
  type CRichEditCtrlT (line 8078) | typedef CRichEditCtrlT<ATL::CWindow>   CRichEditCtrl;
  function BOOL (line 8131) | BOOL HasSelection() const
  function DrawInsert (line 8180) | void DrawInsert(int nItem)
  function UINT (line 8186) | static UINT GetDragListMessage()
  type CDragListBoxT (line 8209) | typedef CDragListBoxT<ATL::CWindow>   CDragListBox;
  function OnCancelDrag (line 8254) | void OnCancelDrag(int /*nCtlID*/, HWND /*hWndDragList*/, POINT /*ptCurso...
  function OnDragging (line 8259) | int OnDragging(int /*nCtlID*/, HWND /*hWndDragList*/, POINT /*ptCursor*/)
  function OnDropped (line 8264) | void OnDropped(int /*nCtlID*/, HWND /*hWndDragList*/, POINT /*ptCursor*/)
  function LPCTSTR (line 8296) | static LPCTSTR GetWndClassName()
  function UINT (line 8301) | UINT GetBandCount() const
  function BOOL (line 8313) | BOOL SetBandInfo(int nBand, LPREBARBANDINFO lprbbi)
  function BOOL (line 8319) | BOOL GetBarInfo(LPREBARINFO lprbi) const
  function BOOL (line 8325) | BOOL SetBarInfo(LPREBARINFO lprbi)
  function CImageList (line 8331) | CImageList GetImageList() const
  function COLORREF (line 8363) | COLORREF GetTextColor() const
  function COLORREF (line 8375) | COLORREF GetBkColor() const
  function UINT (line 8387) | UINT GetBarHeight() const
  function CToolTipCtrl (line 8399) | CToolTipCtrl GetToolTips() const
  function GetBandBorders (line 8411) | void GetBandBorders(int nBand, LPRECT lpRect) const
  function BOOL (line 8418) | BOOL GetColorScheme(LPCOLORSCHEME lpColorScheme) const
  function SetColorScheme (line 8425) | void SetColorScheme(LPCOLORSCHEME lpColorScheme)
  function HPALETTE (line 8432) | HPALETTE GetPalette() const
  function BOOL (line 8444) | BOOL GetUnicodeFormat() const
  function SetWindowTheme (line 8466) | void SetWindowTheme(LPCWSTR lpstrTheme)
  function DWORD (line 8472) | DWORD GetExtendedStyle() const
  function BOOL (line 8485) | BOOL InsertBand(int nBand, LPREBARBANDINFO lprbbi)
  function BOOL (line 8491) | BOOL AddBand(LPREBARBANDINFO lprbbi)
  function BOOL (line 8496) | BOOL DeleteBand(int nBand)
  function BeginDrag (line 8508) | void BeginDrag(int nBand, DWORD dwPos)
  function BeginDrag (line 8514) | void BeginDrag(int nBand, int xPos, int yPos)
  function EndDrag (line 8520) | void EndDrag()
  function DragMove (line 8526) | void DragMove(DWORD dwPos)
  function DragMove (line 8532) | void DragMove(int xPos, int yPos)
  function GetDropTarget (line 8538) | void GetDropTarget(IDropTarget** ppDropTarget) const
  function MinimizeBand (line 8550) | void MinimizeBand(int nBand)
  function BOOL (line 8556) | BOOL SizeToRect(LPRECT lpRect)
  function IdToIndex (line 8562) | int IdToIndex(UINT uBandID) const
  function HitTest (line 8568) | int HitTest(LPRBHITTESTINFO lprbht) const
  function BOOL (line 8574) | BOOL ShowBand(int nBand, BOOL bShow)
  function BOOL (line 8580) | BOOL MoveBand(int nBand, int nNewPos)
  function PushChevron (line 8587) | void PushChevron(int nBand, LPARAM lAppValue)
  function LockBands (line 8594) | void LockBands(bool bLock)
  function BOOL (line 8623) | BOOL SetBandWidth(int nBand, int cxWidth)
  type CReBarCtrlT (line 8631) | typedef CReBarCtrlT<ATL::CWindow>   CReBarCtrl;
  function LPCTSTR (line 8659) | static LPCTSTR GetWndClassName()
  function CImageList (line 8664) | CImageList GetImageList() const
  function BOOL (line 8688) | BOOL GetUnicodeFormat() const
  function InsertItem (line 8707) | int InsertItem(const COMBOBOXEXITEM* lpcCBItem)
  function InsertItem (line 8713) | int InsertItem(UINT nMask, int nIndex, LPCTSTR lpszItem, int nImage, int...
  function AddItem (line 8743) | int AddItem(UINT nMask, LPCTSTR lpszItem, int nImage, int nSelImage, int...
  function DeleteItem (line 8753) | int DeleteItem(int nIndex)
  function BOOL (line 8759) | BOOL GetItem(PCOMBOBOXEXITEM pCBItem) const
  function BOOL (line 8765) | BOOL SetItem(const COMBOBOXEXITEM* lpcCBItem)
  function SetItem (line 8771) | int SetItem(int nIndex, UINT nMask, LPCTSTR lpszItem, int nImage, int nS...
  function BOOL (line 8787) | BOOL GetItemText(int nIndex, LPTSTR lpszItem, int nLen) const
  function BOOL (line 8801) | BOOL GetItemText(int nIndex, BSTR& bstrText) const
  function BOOL (line 8839) | BOOL GetItemText(int nIndex, ATL::CString& strText) const
  function BOOL (line 8867) | BOOL SetItemText(int nIndex, LPCTSTR lpszItem)
  function CComboBox (line 8873) | CComboBox GetComboCtrl() const
  function InsertString (line 8898) | int InsertString(int /*nIndex*/, LPCTSTR /*lpszString*/)
  function Dir (line 8904) | int Dir(UINT /*attr*/, LPCTSTR /*lpszWildCard*/)
  function FindString (line 8910) | int FindString(int /*nStartAfter*/, LPCTSTR /*lpszString*/) const
  type CComboBoxExT (line 8917) | typedef CComboBoxExT<ATL::CWindow>   CComboBoxEx;
  function LPCTSTR (line 8945) | static LPCTSTR GetWndClassName()
  function COLORREF (line 8950) | COLORREF GetColor(int nColorType) const
  function COLORREF (line 8956) | COLORREF SetColor(int nColorType, COLORREF clr)
  function BOOL (line 8962) | BOOL GetCurSel(LPSYSTEMTIME lpSysTime) const
  function BOOL (line 8968) | BOOL SetCurSel(LPSYSTEMTIME lpSysTime)
  function BOOL (line 8998) | BOOL SetMaxSelCount(int nMax)
  function GetMonthDelta (line 9004) | int GetMonthDelta() const
  function DWORD (line 9016) | DWORD GetRange(LPSYSTEMTIME lprgSysTimeArray) const
  function BOOL (line 9022) | BOOL SetRange(DWORD dwFlags, LPSYSTEMTIME lprgSysTimeArray)
  function BOOL (line 9028) | BOOL GetSelRange(LPSYSTEMTIME lprgSysTimeArray) const
  function BOOL (line 9034) | BOOL SetSelRange(LPSYSTEMTIME lprgSysTimeArray)
  function BOOL (line 9040) | BOOL GetToday(LPSYSTEMTIME lpSysTime) const
  function SetToday (line 9046) | void SetToday(LPSYSTEMTIME lpSysTime)
  function BOOL (line 9052) | BOOL GetMinReqRect(LPRECT lpRectInfo) const
  function GetMaxTodayWidth (line 9058) | int GetMaxTodayWidth() const
  function DWORD (line 9077) | DWORD GetCurrentView() const
  function DWORD (line 9089) | DWORD GetCalendarCount() const
  function CALID (line 9101) | CALID GetCALID() const
  function GetCalendarBorder (line 9113) | int GetCalendarBorder() const
  function BOOL (line 9133) | BOOL SetDayState(int nMonths, LPMONTHDAYSTATE lpDayStateArray)
  function DWORD (line 9139) | DWORD HitTest(PMCHITTESTINFO pMCHitTest) const
  function SizeRectToMin (line 9146) | void SizeRectToMin(LPRECT lpRect)
  type CMonthCalendarCtrlT (line 9154) | typedef CMonthCalendarCtrlT<ATL::CWindow>   CMonthCalendarCtrl;
  function LPCTSTR (line 9182) | static LPCTSTR GetWndClassName()
  function BOOL (line 9187) | BOOL SetFormat(LPCTSTR lpszFormat)
  function COLORREF (line 9193) | COLORREF GetMonthCalColor(int nColorType) const
  function COLORREF (line 9199) | COLORREF SetMonthCalColor(int nColorType, COLORREF clr)
  function DWORD (line 9205) | DWORD GetRange(LPSYSTEMTIME lpSysTimeArray) const
  function BOOL (line 9211) | BOOL SetRange(DWORD dwFlags, LPSYSTEMTIME lpSysTimeArray)
  function DWORD (line 9217) | DWORD GetSystemTime(LPSYSTEMTIME lpSysTime) const
  function BOOL (line 9223) | BOOL SetSystemTime(DWORD dwFlags, LPSYSTEMTIME lpSysTime)
  function CMonthCalendarCtrl (line 9229) | CMonthCalendarCtrl GetMonthCal() const
  function DWORD (line 9254) | DWORD SetMonthCalStyle(DWORD dwStyle)
  function GetDateTimePickerInfo (line 9260) | void GetDateTimePickerInfo(LPDATETIMEPICKERINFO lpPickerInfo) const
  function BOOL (line 9266) | BOOL GetIdealSize(LPSIZE lpSize) const
  function CloseMonthCal (line 9272) | void CloseMonthCal()
  type CDateTimePickerCtrlT (line 9280) | typedef CDateTimePickerCtrlT<ATL::CWindow>   CDateTimePickerCtrl;
  function HRESULT (line 9298) | HRESULT FlatSB_Uninitialize()
  function BOOL (line 9306) | BOOL FlatSB_GetScrollProp(UINT uIndex, LPINT lpnValue) const
  function FlatSB_GetScrollPos (line 9321) | int FlatSB_GetScrollPos(int nBar) const
  function BOOL (line 9335) | BOOL FlatSB_GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const
  function BOOL (line 9349) | BOOL FlatSB_GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo) const
  function BOOL (line 9371) | BOOL FlatSB_EnableScrollBar(UINT uSBFlags, UINT uArrowFlags = ESB_ENABLE...
  type CFlatScrollBarT (line 9393) | typedef CFlatScrollBarT<ATL::CWindow>   CFlatScrollBar;
  function LPCTSTR (line 9421) | static LPCTSTR GetWndClassName()
  function BOOL (line 9426) | BOOL IsBlank() const
  function SetAddress (line 9438) | void SetAddress(DWORD dwAddress)
  function ClearAddress (line 9444) | void ClearAddress()
  function SetRange (line 9450) | void SetRange(int nField, WORD wRange)
  function SetRange (line 9456) | void SetRange(int nField, BYTE nMin, BYTE nMax)
  function SetFocus (line 9462) | void SetFocus(int nField)
  type CIPAddressCtrlT (line 9469) | typedef CIPAddressCtrlT<ATL::CWindow>   CIPAddressCtrl;
  function LPCTSTR (line 9497) | static LPCTSTR GetWndClassName()
  function GetButtonSize (line 9502) | int GetButtonSize() const
  function DWORD (line 9514) | DWORD GetButtonState(int nButton) const
  function COLORREF (line 9521) | COLORREF GetBkColor() const
  function GetBorder (line 9533) | int GetBorder() const
  function GetPos (line 9545) | int GetPos() const
  function SetChild (line 9558) | void SetChild(HWND hWndChild)
  function RecalcSize (line 9570) | void RecalcSize()
  function GetDropTarget (line 9576) | void GetDropTarget(IDropTarget** ppDropTarget)
  type CPagerCtrlT (line 9584) | typedef CPagerCtrlT<ATL::CWindow>   CPagerCtrl;
  function LPCTSTR (line 9612) | static LPCTSTR GetWndClassName()
  function BOOL (line 9627) | BOOL GetItem(PLITEM pLItem) const
  function BOOL (line 9633) | BOOL SetItem(PLITEM pLItem)
  function BOOL (line 9647) | BOOL HitTest(PLHITTESTINFO pLHitTestInfo) const
  type CLinkCtrlT (line 9654) | typedef CLinkCtrlT<ATL::CWindow>   CLinkCtrl;
  function DWORD (line 9716) | DWORD OnPrePaint(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 9721) | DWORD OnPostPaint(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 9726) | DWORD OnPreErase(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 9731) | DWORD OnPostErase(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 9736) | DWORD OnItemPrePaint(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 9741) | DWORD OnItemPostPaint(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 9746) | DWORD OnItemPreErase(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 9751) | DWORD OnItemPostErase(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 9756) | DWORD OnSubItemPrePaint(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)

FILE: third_party/WTL/Include/atlctrlw.h
  function namespace (line 39) | namespace WTL
  type _ToolBarData (line 202) | struct _ToolBarData	// toolbar resource data
  type _CmdBarDrawConstants (line 215) | enum _CmdBarDrawConstants
  function COLORREF (line 347) | COLORREF SetImageMaskColor(COLORREF clrMask)
  function SetImagesVisible (line 359) | bool SetImagesVisible(bool bVisible)
  function GetImageSize (line 366) | void GetImageSize(SIZE& size) const
  function SetImageSize (line 371) | bool SetImageSize(SIZE& size)
  function SetImageSize (line 376) | bool SetImageSize(int cx, int cy)
  function SetAlphaImages (line 407) | bool SetAlphaImages(bool bAlphaImages)
  function HWND (line 426) | HWND GetCmdBar() const
  function BOOL (line 456) | BOOL LoadMenu(ATL::_U_STRINGorID menu)
  function BOOL (line 472) | BOOL AttachMenu(HMENU hMenu)
  function BOOL (line 561) | BOOL LoadImages(ATL::_U_STRINGorID image)
  function BOOL (line 655) | BOOL AddBitmap(ATL::_U_STRINGorID bitmap, int nCommandID)
  function BOOL (line 665) | BOOL AddBitmap(HBITMAP hBitmap, UINT nCommandID)
  function BOOL (line 700) | BOOL AddIcon(ATL::_U_STRINGorID icon, UINT nCommandID)
  function BOOL (line 709) | BOOL AddIcon(HICON hIcon, UINT nCommandID)
  function BOOL (line 735) | BOOL ReplaceBitmap(ATL::_U_STRINGorID bitmap, int nCommandID)
  function BOOL (line 745) | BOOL ReplaceBitmap(HBITMAP hBitmap, UINT nCommandID)
  function BOOL (line 774) | BOOL ReplaceIcon(ATL::_U_STRINGorID icon, UINT nCommandID)
  function BOOL (line 783) | BOOL ReplaceIcon(HICON hIcon, UINT nCommandID)
  function BOOL (line 805) | BOOL RemoveImage(int nCommandID)
  function BOOL (line 833) | BOOL RemoveAllImages()
  function BOOL (line 867) | BOOL SetMDIClient(HWND /*hWndMDIClient*/)
  function MESSAGE_HANDLER (line 875) | BEGIN_MSG_MAP(CCommandBarCtrlImpl)
  function LRESULT (line 944) | LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandl...
  function LRESULT (line 1006) | LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHand...
  function LRESULT (line 1065) | LRESULT OnKeyDown(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bHa...
  function LRESULT (line 1103) | LRESULT OnKeyUp(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& b...
  function LRESULT (line 1120) | LRESULT OnChar(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bH...
  function LRESULT (line 1196) | LRESULT OnEraseBackground(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*...
  function LRESULT (line 1212) | LRESULT OnInitMenu(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, ...
  function LRESULT (line 1325) | LRESULT OnMenuSelect(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHan...
  function LRESULT (line 1385) | LRESULT OnInternalAutoPopup(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lPara...
  function LRESULT (line 1393) | LRESULT OnInternalGetBar(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/...
  function LRESULT (line 1404) | LRESULT OnSettingChange(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/,...
  function LRESULT (line 1415) | LRESULT OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam, BOO...
  function LRESULT (line 1427) | LRESULT OnMenuChar(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bH...
  function LRESULT (line 1556) | LRESULT OnDrawItem(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL...
  function LRESULT (line 1572) | LRESULT OnMeasureItem(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, B...
  function LRESULT (line 1594) | LRESULT OnAPITrackPopupMenu(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lPa...
  function LRESULT (line 1612) | LRESULT OnParentHotItemChange(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
  function LRESULT (line 1648) | LRESULT OnParentDropDown(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
  function LRESULT (line 1669) | LRESULT OnParentInitMenuPopup(UINT uMsg, WPARAM wParam, LPARAM lParam, B...
  function LRESULT (line 1674) | LRESULT OnParentInternalGetBar(UINT uMsg, WPARAM wParam, LPARAM lParam, ...
  function LRESULT (line 1679) | LRESULT OnParentSysCommand(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam...
  function LRESULT (line 1710) | LRESULT OnParentAPIGetMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL...
  function LRESULT (line 1715) | LRESULT OnParentMenuChar(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& ...
  function LRESULT (line 1720) | LRESULT OnParentAPITrackPopupMenu(UINT uMsg, WPARAM wParam, LPARAM lPara...
  function LRESULT (line 1725) | LRESULT OnParentAPIGetCmdBar(UINT uMsg, WPARAM wParam, LPARAM lParam, BO...
  function LRESULT (line 1730) | LRESULT OnParentSettingChange(UINT uMsg, WPARAM wParam, LPARAM lParam, B...
  function LRESULT (line 1737) | LRESULT OnParentDrawItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& ...
  function LRESULT (line 1742) | LRESULT OnParentMeasureItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOO...
  function LRESULT (line 1747) | LRESULT OnParentActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/...
  function LRESULT (line 1763) | LRESULT OnParentCustomDraw(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
  function _ParentCustomDrawHelper (line 1831) | void _ParentCustomDrawHelper(LPNMTBCUSTOMDRAW lpTBCustomDraw)
  function LRESULT (line 1858) | LRESULT OnHookMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lPara...
  function LRESULT (line 1901) | LRESULT OnHookSysKeyDown(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/...
  function LRESULT (line 1931) | LRESULT OnHookSysKeyUp(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, ...
  function LRESULT (line 1943) | LRESULT OnHookSysChar(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, B...
  function LRESULT (line 1955) | LRESULT OnHookKeyDown(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, B...
  function LRESULT (line 2077) | LRESULT OnHookChar(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL...
  function DrawItem (line 2087) | void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
  function DrawItem3D (line 2097) | void DrawItem3D(LPDRAWITEMSTRUCT lpDrawItemStruct)
  function DrawItemFlat (line 2214) | void DrawItemFlat(LPDRAWITEMSTRUCT lpDrawItemStruct)
  function DrawMenuText (line 2310) | void DrawMenuText(CDCHandle& dc, RECT& rc, LPCTSTR lpstrText, COLORREF c...
  function DrawBitmapDisabled (line 2328) | void DrawBitmapDisabled(CDCHandle& dc, int nImage, POINT point,
  function BOOL (line 2373) | BOOL Draw3DCheckmark(CDCHandle& dc, const RECT& rc, BOOL bSelected, BOOL...
  function BOOL (line 2378) | BOOL DrawCheckmark(CDCHandle& dc, const RECT& rc, BOOL bSelected, BOOL b...
  function MeasureItem (line 2536) | void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
  function LRESULT (line 2595) | static LRESULT CALLBACK CreateHookProc(int nCode, WPARAM wParam, LPARAM ...
  function LRESULT (line 2629) | static LRESULT CALLBACK MessageHookProc(int nCode, WPARAM wParam, LPARAM...
  function DoPopupMenu (line 2671) | void DoPopupMenu(int nIndex, bool bAnimate)
  function GetPreviousMenuItem (line 2822) | int GetPreviousMenuItem(int nBtn) const
  function GetNextMenuItem (line 2848) | int GetNextMenuItem(int nBtn) const
  function DisplayChevronMenu (line 2875) | bool DisplayChevronMenu()
  function TakeFocus (line 3007) | void TakeFocus()
  function GiveFocusBack (line 3014) | void GiveFocusBack()
  function ShowKeyboardCues (line 3030) | void ShowKeyboardCues(bool bShow)
  function UINT (line 3039) | static UINT GetAutoPopupMessage()
  function UINT (line 3061) | static UINT GetGetBarMessage()
  function CreateInternalImageList (line 3084) | bool CreateInternalImageList(int cImages)
  function _AddVistaBitmapsFromImageList (line 3094) | void _AddVistaBitmapsFromImageList(int nStartIndex, int nCount)
  function _AddVistaBitmapFromImageList (line 3112) | void _AddVistaBitmapFromImageList(int nIndex)
  function _ReplaceVistaBitmapFromImageList (line 3129) | void _ReplaceVistaBitmapFromImageList(int nIndex)
  function HBITMAP (line 3150) | HBITMAP _CreateVistaBitmapHelper(int nIndex, HDC hDCSource, HDC hDCTarget)
  function _RemoveVistaBitmapsFromMenu (line 3193) | void _RemoveVistaBitmapsFromMenu()
  function _IsValidMem (line 3207) | static bool _IsValidMem(void* pMem)
  function class (line 3222) | class CCommandBarCtrl : public CCommandBarCtrlImpl<CCommandBarCtrl>
  function BOOL (line 3273) | BOOL SetMDIClient(HWND hWndMDIClient)
  type CCommandBarCtrlImpl (line 3298) | typedef CCommandBarCtrlImpl< T, TBase, TWinTraits >   _baseClass;
  function MESSAGE_HANDLER (line 3299) | BEGIN_MSG_MAP(CMDICommandBarCtrlImpl)
  function LRESULT (line 3337) | LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  function LRESULT (line 3347) | LRESULT OnThemeChanged(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam...
  function LRESULT (line 3364) | LRESULT OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bH...
  function LRESULT (line 3386) | LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHand...
  function LRESULT (line 3453) | LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHa...
  function LRESULT (line 3475) | LRESULT OnNcLButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam,...
  function LRESULT (line 3553) | LRESULT OnMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOO...
  function LRESULT (line 3582) | LRESULT OnLButtonUp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOO...
  function LRESULT (line 3635) | LRESULT OnNcLButtonDblClk(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lPara...
  function LRESULT (line 3695) | LRESULT OnParentActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/...
  function LRESULT (line 3704) | LRESULT OnMDISetMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bH...
  function LRESULT (line 3719) | LRESULT OnAllHookMessages(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL&...
  function UpdateRebarBandIdealSize (line 3730) | void UpdateRebarBandIdealSize()
  function _ProcessAllHookMessages (line 3758) | void _ProcessAllHookMessages(UINT uMsg, WPARAM /*wParam*/, LPARAM /*lPar...
  function GetSystemSettings (line 3832) | void GetSystemSettings()
  function _AdjustBtnSize (line 3868) | void _AdjustBtnSize(int cyHeight)
  function _DrawMDIButton (line 3926) | void _DrawMDIButton(CWindowDC& dc, LPRECT pRects, int nBtn)
  function _OpenThemeData (line 3962) | void _OpenThemeData()
  function _CloseThemeData (line 3968) | void _CloseThemeData()
  function _DebugCheckChild (line 3977) | bool _DebugCheckChild()
  function class (line 3989) | class CMDICommandBarCtrl : public CMDICommandBarCtrlImpl<CMDICommandBarC...

FILE: third_party/WTL/Include/atlctrlx.h
  function namespace (line 44) | namespace WTL
  function BOOL (line 126) | BOOL SubclassWindow(HWND hWnd)
  function HIMAGELIST (line 165) | HIMAGELIST SetImageList(HIMAGELIST hImageList)
  function GetToolTipText (line 180) | bool GetToolTipText(LPTSTR lpstrText, int nLength) const
  function SetToolTipText (line 191) | bool SetToolTipText(LPCTSTR lpstrText)
  function BOOL (line 250) | BOOL SizeToImage()
  function DoPaint (line 261) | void DoPaint(CDCHandle dc)
  function MESSAGE_HANDLER (line 306) | BEGIN_MSG_MAP(CBitmapButtonImpl)
  function LRESULT (line 348) | LRESULT OnMouseMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bH...
  function LRESULT (line 362) | LRESULT OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /...
  function LRESULT (line 377) | LRESULT OnFocus(UINT uMsg, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& b...
  function LRESULT (line 386) | LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*b...
  function LRESULT (line 410) | LRESULT OnLButtonDblClk(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /...
  function LRESULT (line 426) | LRESULT OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHa...
  function LRESULT (line 463) | LRESULT OnMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOO...
  function LRESULT (line 501) | LRESULT OnKeyDown(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL&...
  function LRESULT (line 515) | LRESULT OnKeyUp(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& b...
  function LRESULT (line 531) | LRESULT OnTimer(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /...
  function Init (line 568) | void Init()
  function BOOL (line 586) | BOOL StartTrackMouseLeave()
  function class (line 606) | class CBitmapButton : public CBitmapButtonImpl<CBitmapButton>
  function DWORD (line 629) | static DWORD GetWndExStyle(DWORD dwExStyle)
  function DWORD (line 634) | static DWORD GetExtendedLVStyle()
  type CCheckListViewCtrlImplTraits (line 640) | typedef CCheckListViewCtrlImplTraits<WS_CHILD | WS_VISIBLE | LVS_REPORT ...
  function BOOL (line 655) | BOOL SubclassWindow(HWND hWnd)
  function CheckSelectedItems (line 667) | void CheckSelectedItems(int nCurrItem)
  function Init (line 692) | void Init()
  function MESSAGE_HANDLER (line 701) | BEGIN_MSG_MAP(CCheckListViewCtrlImpl)
  function LRESULT (line 721) | LRESULT OnLButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, B...
  function LRESULT (line 735) | LRESULT OnKeyDown(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL&...
  function class (line 751) | class CCheckListViewCtrl : public CCheckListViewCtrlImpl<CCheckListViewC...
  function GetLabel (line 836) | bool GetLabel(LPTSTR lpstrBuffer, int nLength) const
  function SetLabel (line 849) | bool SetLabel(LPCTSTR lpstrLabel)
  function GetHyperLink (line 868) | bool GetHyperLink(LPTSTR lpstrBuffer, int nLength) const
  function SetHyperLink (line 881) | bool SetHyperLink(LPCTSTR lpstrLink)
  function SetLinkFont (line 911) | void SetLinkFont(HFONT hFont)
  function GetIdealHeight (line 925) | int GetIdealHeight() const
  function GetIdealSize (line 960) | bool GetIdealSize(int& cx, int& cy) const
  function GetToolTipText (line 1041) | bool GetToolTipText(LPTSTR lpstrBuffer, int nLength) const
  function SetToolTipText (line 1047) | bool SetToolTipText(LPCTSTR lpstrToolTipText)
  function BOOL (line 1054) | BOOL SubclassWindow(HWND hWnd)
  function Navigate (line 1071) | bool Navigate()
  function CreateLinkFontFromNormal (line 1099) | void CreateLinkFontFromNormal()
  function MESSAGE_HANDLER (line 1122) | BEGIN_MSG_MAP(CHyperLinkImpl)
  function LRESULT (line 1178) | LRESULT OnMouseMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bH...
  function LRESULT (line 1192) | LRESULT OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& b...
  function LRESULT (line 1225) | LRESULT OnMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOO...
  function LRESULT (line 1269) | LRESULT OnLButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, B...
  function LRESULT (line 1280) | LRESULT OnLButtonUp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOO...
  function LRESULT (line 1295) | LRESULT OnChar(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*...
  function LRESULT (line 1310) | LRESULT OnSetCursor(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,...
  function LRESULT (line 1335) | LRESULT OnSetFont(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*b...
  function LRESULT (line 1369) | LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL...
  function COLORREF (line 1479) | static COLORREF _ParseColorString(LPTSTR lpstr)
  function CalcLabelRect (line 1505) | bool CalcLabelRect()
  function CalcLabelParts (line 1584) | void CalcLabelParts(LPTSTR& lpstrLeft, int& cchLeft, LPTSTR& lpstrLink, ...
  function DoEraseBackground (line 1631) | void DoEraseBackground(CDCHandle dc)
  function DoPaint (line 1642) | void DoPaint(CDCHandle dc)
  function BOOL (line 1721) | BOOL StartTrackMouseLeave()
  function class (line 1782) | class CHyperLink : public CHyperLinkImpl<CHyperLink>
  function class (line 1840) | class CCustomWaitCursor : public CWaitCursor
  function BOOL (line 2027) | BOOL GetPaneRect(int nPaneID, LPRECT lpRect) const
  function BOOL (line 2037) | BOOL SetPaneWidth(int nPaneID, int cxWidth)
  function BOOL (line 2080) | BOOL GetPaneTipText(int nPaneID, LPTSTR lpstrText, int nSize) const
  function BOOL (line 2091) | BOOL SetPaneTipText(int nPaneID, LPCTSTR lpstrText)
  function BOOL (line 2102) | BOOL GetPaneIcon(int nPaneID, HICON& hIcon) const
  function BOOL (line 2113) | BOOL SetPaneIcon(int nPaneID, HICON hIcon)
  function GetPaneIndexFromID (line 2176) | int GetPaneIndexFromID(int nPaneID) const
  function class (line 2188) | class CMultiPaneStatusBarCtrl : public CMultiPaneStatusBarCtrlImpl<CMult...
  function HWND (line 2308) | HWND SetClient(HWND hWndClient)
  function BOOL (line 2320) | BOOL GetTitle(LPTSTR lpstrTitle, int cchLength) const
  function BOOL (line 2329) | BOOL SetTitle(LPCTSTR lpstrTitle)
  function BOOL (line 2366) | BOOL SubclassWindow(HWND hWnd)
  function BOOL (line 2382) | BOOL EnableCloseButton(BOOL bEnable)
  function UpdateLayout (line 2390) | void UpdateLayout()
  function MESSAGE_HANDLER (line 2399) | BEGIN_MSG_MAP(CPaneContainerImpl)
  function LRESULT (line 2434) | LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*...
  function LRESULT (line 2453) | LRESULT OnSetFont(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*b...
  function LRESULT (line 2472) | LRESULT OnEraseBackground(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*...
  function LRESULT (line 2480) | LRESULT OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /...
  function LRESULT (line 2502) | LRESULT OnNotify(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& ...
  function LRESULT (line 2529) | LRESULT OnCommand(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bHa...
  function DWORD (line 2540) | DWORD OnPrePaint(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 2545) | DWORD OnItemPrePaint(int /*idCtrl*/, LPNMCUSTOMDRAW /*lpNMCustomDraw*/)
  function DWORD (line 2550) | DWORD OnItemPostPaint(int /*idCtrl*/, LPNMCUSTOMDRAW lpNMCustomDraw)
  function Init (line 2583) | void Init()
  function UpdateLayout (line 2603) | void UpdateLayout(int cxWidth, int cyHeight)
  function CreateCloseButton (line 2634) | void CreateCloseButton()
  function DestroyCloseButton (line 2664) | void DestroyCloseButton()
  function CalcSize (line 2670) | void CalcSize()
  function BOOL (line 2695) | BOOL GetToolTipText(LPNMHDR /*lpnmh*/)
  function DrawPaneTitle (line 2700) | void DrawPaneTitle(CDCHandle dc)
  function DrawPaneTitleBackground (line 2765) | void DrawPaneTitleBackground(CDCHandle dc)
  function DrawPane (line 2781) | void DrawPane(CDCHandle dc)
  function DrawButtonImage (line 2795) | void DrawButtonImage(CDCHandle dc, RECT& rcImage, HPEN hPen)
  function class (line 2818) | class CPaneContainer : public CPaneContainerImpl<CPaneContainer>
  function CreateSortBitmaps (line 3167) | void CreateSortBitmaps()
  function NotifyParentSortChanged (line 3221) | void NotifyParentSortChanged(int iNewSortCol, int iOldSortCol)
  function CompareItemsCustom (line 3230) | int CompareItemsCustom(LVCompareParam* /*pItem1*/, LVCompareParam* /*pIt...
  function DrawSortBitmap (line 3237) | void DrawSortBitmap(CDCHandle dc, int iBitmap, LPRECT prc)
  function DateStrToDouble (line 3269) | double DateStrToDouble(LPCTSTR lpstr, DWORD dwFlags)
  function StrToLong (line 3286) | long StrToLong(LPCTSTR lpstr)
  function StrToDouble (line 3303) | double StrToDouble(LPCTSTR lpstr)
  function StrToDecimal (line 3320) | bool StrToDecimal(LPCTSTR lpstr, DECIMAL* pDecimal)
  function LVCompareText (line 3341) | static int CALLBACK LVCompareText(LPARAM lParam1, LPARAM lParam2, LPARAM...
  function LVCompareTextNoCase (line 3353) | static int CALLBACK LVCompareTextNoCase(LPARAM lParam1, LPARAM lParam2, ...
  function LVCompareLong (line 3365) | static int CALLBACK LVCompareLong(LPARAM lParam1, LPARAM lParam2, LPARAM...
  function LVCompareDouble (line 3381) | static int CALLBACK LVCompareDouble(LPARAM lParam1, LPARAM lParam2, LPAR...
  function LVCompareCustom (line 3397) | static int CALLBACK LVCompareCustom(LPARAM lParam1, LPARAM lParam2, LPAR...
  function LVCompareDecimal (line 3409) | static int CALLBACK LVCompareDecimal(LPARAM lParam1, LPARAM lParam2, LPA...
  function MESSAGE_HANDLER (line 3422) | BEGIN_MSG_MAP(CSortListViewImpl)
  function LRESULT (line 3452) | LRESULT OnDeleteColumn(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*...
  function LRESULT (line 3469) | LRESULT OnHeaderItemClick(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
  function LRESULT (line 3483) | LRESULT OnSettingChange(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/,...
  function GetSystemSettings (line 3491) | void GetSystemSettings()
  type ATL (line 3505) | typedef ATL::CWinTraits<WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLI...
  function MESSAGE_HANDLER (line 3518) | BEGIN_MSG_MAP(CSortListViewCtrlImpl)
  type TCITEMEXTRA (line 3748) | struct TCITEMEXTRA
  type AutoScroll (line 3766) | enum AutoScroll
  type CloseBtn (line 3773) | enum CloseBtn
  function BOOL (line 3859) | BOOL PreTranslateMessage(MSG* pMsg)
  function GetPageCount (line 3912) | int GetPageCount() const
  function SetActivePage (line 3923) | void SetActivePage(int nPage)
  function HIMAGELIST (line 3952) | HIMAGELIST GetImageList() const
  function SetWindowMenu (line 3964) | void SetWindowMenu(HMENU hMenu)
  function SetTitleBarWindow (line 3974) | void SetTitleBarWindow(HWND hWnd)
  function HWND (line 3996) | HWND GetPageHWND(int nPage) const
  function LPCTSTR (line 4008) | LPCTSTR GetPageTitle(int nPage) const
  function SetPageTitle (line 4021) | bool SetPageTitle(int nPage, LPCTSTR lpstrTitle)
  function LPVOID (line 4061) | LPVOID GetPageData(int nPage) const
  function LPVOID (line 4073) | LPVOID SetPageData(int nPage, LPVOID pData)
  function GetPageImage (line 4089) | int GetPageImage(int nPage) const
  function SetPageImage (line 4101) | int SetPageImage(int nPage, int nImage)
  function RemovePage (line 4180) | void RemovePage(int nPage)
  function RemoveAllPages (line 4232) | void RemoveAllPages()
  function PageIndexFromHwnd (line 4267) | int PageIndexFromHwnd(HWND hWnd) const
  function BOOL (line 4382) | BOOL SubclassWindow(HWND hWnd)
  function MESSAGE_HANDLER (line 4396) | BEGIN_MSG_MAP(CTabViewImpl)
  function LRESULT (line 4451) | LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL...
  function LRESULT (line 4470) | LRESULT OnSetFont(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*b...
  function LRESULT (line 4491) | LRESULT OnTimer(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& b...
  function LRESULT (line 4506) | LRESULT OnTabContextMenu(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BO...
  function LRESULT (line 4546) | LRESULT OnTabChanged(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
  function LRESULT (line 4563) | LRESULT OnTabNotification(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHan...
  function LRESULT (line 4570) | LRESULT OnTabGetDispInfo(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
  function LRESULT (line 4587) | LRESULT OnTabLButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam...
  function LRESULT (line 4602) | LRESULT OnTabLButtonUp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, ...
  function LRESULT (line 4650) | LRESULT OnTabMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, ...
  function LRESULT (line 4755) | LRESULT OnTabCloseBtnMouseLeave(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& ...
  function LRESULT (line 4767) | LRESULT OnTabCloseBtnClicked(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*...
  function MovePage (line 4781) | bool MovePage(int nMovePage, int nInsertBeforePage)
  function CreateTabControl (line 4827) | bool CreateTabControl()
  function CalcTabHeight (line 4845) | int CalcTabHeight()
  function ShowTabControl (line 4867) | void ShowTabControl(bool bShow)
  function UpdateLayout (line 4874) | void UpdateLayout()
  function UpdateMenu (line 4890) | void UpdateMenu()
  function UpdateTitleBar (line 4896) | void UpdateTitleBar()
  function DrawMoveMark (line 4929) | void DrawMoveMark(int nItem)
  function GetMoveMarkRect (line 4971) | void GetMoveMarkRect(RECT& rect) const
  function SetMoveCursor (line 4990) | void SetMoveCursor(bool bCanMove)
  function GenerateDragImage (line 4995) | void GenerateDragImage(int nItem)
  function ShortenTitle (line 5023) | void ShortenTitle(LPCTSTR lpstrTitle, LPTSTR lpstrShortTitle, int cchSho...
  function UpdateTooltipText (line 5038) | void UpdateTooltipText(LPNMTTDISPINFO pTTDI)
  function DragHitTest (line 5044) | int DragHitTest(POINT pt) const
  function StartStopAutoScroll (line 5068) | void StartStopAutoScroll(int x)
  function DoAutoScroll (line 5110) | void DoAutoScroll()
  function LPCTSTR (line 5136) | static LPCTSTR GetEmptyListText()
  function LPCTSTR (line 5141) | static LPCTSTR GetWindowsMenuItemText()
  function LPCTSTR (line 5146) | static LPCTSTR GetTitleDividerText()
  function OnPageActivated (line 5152) | void OnPageActivated(int nPage)
  function OnContextMenu (line 5161) | void OnContextMenu(int nPage, POINT pt)
  function OnTabCloseBtn (line 5171) | void OnTabCloseBtn(int nPage)
  function CreateCloseButton (line 5192) | void CreateCloseButton(int nItem)
  function DestroyCloseButton (line 5222) | void DestroyCloseButton()
  function CalcCloseButtonRect (line 5238) | void CalcCloseButtonRect(int nItem, RECT& rcClose)
  function class (line 5250) | class CTabView : public CTabViewImpl<CTabView>

FILE: third_party/WTL/Include/atlddx.h
  function namespace (line 27) | namespace WTL
  function BOOL (line 395) | static BOOL _AtlSimpleFloatParse(LPCTSTR lpszText, double& d)
  function DDX_Check (line 523) | void DDX_Check(UINT nID, int& nValue, BOOL bSave)
  function DDX_Check (line 544) | void DDX_Check(UINT nID, bool& bCheck, BOOL bSave)
  function DDX_Radio (line 557) | void DDX_Radio(UINT nID, int& nValue, BOOL bSave)
  function _setSel (line 626) | void _setSel(WTL::CListViewCtrl& tCtrl, INT iSel)
  function OnDataExchangeError (line 648) | void OnDataExchangeError(UINT nCtrlID, BOOL /*bSave*/)
  function OnDataValidateError (line 656) | void OnDataValidateError(UINT nCtrlID, BOOL /*bSave*/, _XData& /*data*/)

FILE: third_party/WTL/Include/atldlgs.h
  function namespace (line 97) | namespace WTL
  function NOTIFY_CODE_HANDLER (line 247) | BEGIN_MSG_MAP(CFileDialogImpl)
  function LRESULT (line 265) | LRESULT _OnFolderChange(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
  function LRESULT (line 273) | LRESULT _OnHelp(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
  function LRESULT (line 281) | LRESULT _OnInitDone(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
  function LRESULT (line 289) | LRESULT _OnSelChange(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
  function LRESULT (line 297) | LRESULT _OnShareViolation(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
  function LRESULT (line 304) | LRESULT _OnTypeChange(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
  function LRESULT (line 312) | LRESULT _OnIncludeItem(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
  function BOOL (line 320) | BOOL OnFileOK(LPOFNOTIFY /*lpon*/)
  function OnFolderChange (line 325) | void OnFolderChange(LPOFNOTIFY /*lpon*/)
  function OnHelp (line 329) | void OnHelp(LPOFNOTIFY /*lpon*/)
  function OnInitDone (line 333) | void OnInitDone(LPOFNOTIFY /*lpon*/)
  function OnSelChange (line 337) | void OnSelChange(LPOFNOTIFY /*lpon*/)
  function OnShareViolation (line 341) | int OnShareViolation(LPOFNOTIFY /*lpon*/)
  function OnTypeChange (line 346) | void OnTypeChange(LPOFNOTIFY /*lpon*/)
  function BOOL (line 350) | BOOL OnIncludeItem(LPOFNOTIFYEX /*lponex*/)
  function class (line 356) | class CFileDialog : public CFileDialogImpl<CFileDialog>
  function ATL_NO_VTABLE (line 439) | ATL_NO_VTABLE CMultiFileDialogImpl : public CFileDialogImpl< T >
  function GetDirectory (line 489) | int GetDirectory(LPTSTR pBuffer, int nBufLen) const
  function GetDirectory (line 519) | bool GetDirectory(ATL::CString& strDir) const
  function GetFirstPathName (line 584) | int GetFirstPathName(LPTSTR pBuffer, int nBufLen) const
  function GetFirstPathName (line 611) | bool GetFirstPathName(ATL::CString& strPath) const
  function GetNextPathName (line 631) | int GetNextPathName(LPTSTR pBuffer, int nBufLen) const
  function GetNextPathName (line 681) | bool GetNextPathName(ATL::CString& strPath) const
  function ResizeFilenameBuffer (line 697) | bool ResizeFilenameBuffer(DWORD dwLength)
  function OnSelChange (line 723) | void OnSelChange(LPOFNOTIFY /*lpon*/)
  function class (line 843) | class CMultiFileDialog : public CMultiFileDialogImpl<CMultiFileDialog>
  function ATL_NO_VTABLE (line 875) | ATL_NO_VTABLE CShellFileDialogImpl : public IFileDialogEvents
  function ATL_NO_VTABLE (line 1187) | ATL_NO_VTABLE CShellFileOpenDialogImpl : public CShellFileDialogImpl< T >
  function virtual (line 1204) | virtual ~CShellFileOpenDialogImpl()
  function IFileOpenDialog (line 1207) | IFileOpenDialog* GetPtr()
  function class (line 1217) | class CShellFileOpenDialog : public CShellFileOpenDialogImpl<CShellFileO...
  function ATL_NO_VTABLE (line 1243) | ATL_NO_VTABLE CShellFileSaveDialogImpl : public CShellFileDialogImpl< T >
  function virtual (line 1260) | virtual ~CShellFileSaveDialogImpl()
  function IFileSaveDialog (line 1263) | IFileSaveDialog* GetPtr()
  function class (line 1273) | class CShellFileSaveDialog : public CShellFileSaveDialogImpl<CShellFileS...
  function ATL_NO_VTABLE (line 1301) | ATL_NO_VTABLE CFolderDialogImpl
  function INT_PTR (line 1341) | INT_PTR DoModal(HWND hWndParent = ::GetActiveWindow())
  function SetRootFolder (line 1387) | void SetRootFolder(LPCITEMIDLIST pidl)
  function BrowseCallbackProc (line 1419) | static int CALLBACK BrowseCallbackProc(HWND hWnd, UINT uMsg, LPARAM lPar...
  function OnInitialized (line 1473) | void OnInitialized()
  function OnSelChanged (line 1477) | void OnSelChanged(LPITEMIDLIST /*pItemIDList*/)
  function OnValidateFailed (line 1481) | int OnValidateFailed(LPCTSTR /*lpstrFolderPath*/)
  function OnIUnknown (line 1486) | void OnIUnknown(IUnknown* /*pUnknown*/)
  function EnableOK (line 1491) | void EnableOK(BOOL bEnable)
  function SetSelection (line 1497) | void SetSelection(LPCITEMIDLIST pItemIDList)
  function SetSelection (line 1503) | void SetSelection(LPCTSTR lpstrFolderPath)
  function SetStatusText (line 1509) | void SetStatusText(LPCTSTR lpstrText)
  function SetOKText (line 1515) | void SetOKText(LPCTSTR lpstrOKText)
  function SetExpanded (line 1523) | void SetExpanded(LPCITEMIDLIST pItemIDList)
  function SetExpanded (line 1529) | void SetExpanded(LPCTSTR lpstrFolderPath)
  function class (line 1538) | class CFolderDialog : public CFolderDialogImpl<CFolderDialog>
  function HWND (line 1583) | HWND Create(HWND, ATL::_U_RECT, LPCTSTR, DWORD, DWORD, ATL::_U_MENUorID,...
  function INT_PTR (line 1646) | INT_PTR DoModal(HWND hWndParent = ::GetActiveWindow())
  function GetCurrentFont (line 1677) | void GetCurrentFont(LPLOGFONT lplf) const
  function SetLogFont (line 1688) | void SetLogFont(LPLOGFONT lplf)
  function SetFlags (line 1703) | void SetFlags(DWORD dwFlags)
  function class (line 1764) | class CFontDialog : public CFontDialogImpl<CFontDialog>
  function DoInitTemplate (line 3545) | void DoInitTemplate()
  function DoInitControls (line 3550) | void DoInitControls()
  function class (line 3560) | class CPropertySheetWindow : public ATL::CWindow
  function GetPageCount (line 3574) | int GetPageCount() const
  function GetActiveIndex (line 3588) | int GetActiveIndex() const
  function BOOL (line 3602) | BOOL SetActivePage(HPROPSHEETPAGE hPage)
  function BOOL (line 3609) | BOOL SetActivePageByID(int nPageID)
  function SetFinishText (line 3629) | void SetFinishText(LPCTSTR lpszText)
  function SetWizardButtons (line 3635) | void SetWizardButtons(DWORD dwFlags)
  function BOOL (line 3642) | BOOL AddPage(HPROPSHEETPAGE hPage)
  function BOOL (line 3649) | BOOL AddPage(LPCPROPSHEETPAGE pPage)
  function BOOL (line 3659) | BOOL InsertPage(int nNewPageIndex, HPROPSHEETPAGE hPage)
  function BOOL (line 3666) | BOOL InsertPage(int nNewPageIndex, LPCPROPSHEETPAGE pPage)
  function BOOL (line 3676) | BOOL InsertPage(HPROPSHEETPAGE hPageInsertAfter, HPROPSHEETPAGE hPage)
  function BOOL (line 3683) | BOOL InsertPage(HPROPSHEETPAGE hPageInsertAfter, LPCPROPSHEETPAGE pPage)
  function RemovePage (line 3693) | void RemovePage(int nPageIndex)
  function RemovePage (line 3699) | void RemovePage(HPROPSHEETPAGE hPage)
  function BOOL (line 3706) | BOOL PressButton(int nButton)
  function BOOL (line 3712) | BOOL Apply()
  function CancelToClose (line 3718) | void CancelToClose()
  function LRESULT (line 3732) | LRESULT QuerySiblings(WPARAM wParam, LPARAM lParam)
  function RebootSystem (line 3738) | void RebootSystem()
  function RestartWindows (line 3744) | void RestartWindows()
  function BOOL (line 3750) | BOOL IsDialogMessage(LPMSG lpMsg)
  function HwndToIndex (line 3756) | int HwndToIndex(HWND hWnd) const
  function HWND (line 3762) | HWND IndexToHwnd(int nIndex) const
  function PageToIndex (line 3768) | int PageToIndex(HPROPSHEETPAGE hPage) const
  function HPROPSHEETPAGE (line 3774) | HPROPSHEETPAGE IndexToPage(int nIndex) const
  function IdToIndex (line 3780) | int IdToIndex(int nID) const
  function IndexToId (line 3786) | int IndexToId(int nIndex) const
  function GetResult (line 3792) | int GetResult() const
  function SetHeaderTitle (line 3804) | void SetHeaderTitle(int nIndex, LPCTSTR lpstrHeaderTitle)
  function SetHeaderSubTitle (line 3810) | void SetHeaderSubTitle(int nIndex, LPCTSTR lpstrHeaderSubTitle)
  function HWND (line 3817) | HWND Create(LPCTSTR, HWND, ATL::_U_RECT = NULL, LPCTSTR = NULL, DWORD = ...
  function PropSheetCallback (line 3859) | static int CALLBACK PropSheetCallback(HWND hWnd, UINT uMsg, LPARAM lParam)
  function OnSheetInitialized (line 3879) | void OnSheetInitialized()
  function INT_PTR (line 3914) | INT_PTR DoModal(HWND hWndParent = ::GetActiveWindow())
  function _CleanUpPages (line 3943) | void _CleanUpPages()
  function HPROPSHEETPAGE (line 3967) | HPROPSHEETPAGE GetPage(int nPageIndex) const
  function GetPageIndex (line 3973) | int GetPageIndex(HPROPSHEETPAGE hPage) const
  function BOOL (line 3979) | BOOL SetActivePage(int nPageIndex)
  function BOOL (line 3990) | BOOL SetActivePage(HPROPSHEETPAGE hPage)
  function SetWizardMode (line 4024) | void SetWizardMode()
  function EnableHelp (line 4029) | void EnableHelp()
  function BOOL (line 4035) | BOOL AddPage(HPROPSHEETPAGE hPage)
  function BOOL (line 4046) | BOOL AddPage(LPCPROPSHEETPAGE pPage)
  function BOOL (line 4058) | BOOL RemovePage(HPROPSHEETPAGE hPage)
  function BOOL (line 4073) | BOOL RemovePage(int nPageIndex)
  function SetHeader (line 4083) | void SetHeader(LPCTSTR szbmHeader)
  function SetHeader (line 4092) | void SetHeader(HBITMAP hbmHeader)
  function StretchWatermark (line 4131) | void StretchWatermark(bool bStretchWatermark)
  function MESSAGE_HANDLER (line 4141) | BEGIN_MSG_MAP(CPropertySheetImpl)
  function LRESULT (line 4155) | LRESULT OnSysCommand(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BO...
  function class (line 4166) | class CPropertySheet : public CPropertySheetImpl<CPropertySheet>
  function class (line 4178) | class CPropertyPageWindow : public ATL::CWindow
  function CPropertySheetWindow (line 4192) | CPropertySheetWindow GetPropertySheet() const
  function CancelToClose (line 4206) | void CancelToClose()
  function LRESULT (line 4220) | LRESULT QuerySiblings(WPARAM wParam, LPARAM lParam)
  function RebootSystem (line 4227) | void RebootSystem()
  function RestartWindows (line 4234) | void RestartWindows()
  function SetWizardButtons (line 4241) | void SetWizardButtons(DWORD dwFlags)
  function ATL_NO_VTABLE (line 4273) | ATL_NO_VTABLE CPropertyPageImpl : public ATL::CDialogImplBaseT< TBase >
  function BOOL (line 4741) | BOOL PreTranslateMessage(LPMSG pMsg)
  function OnTranslateAccelerator (line 4763) | int OnTranslateAccelerator(LPMSG lpMsg)
  function BOOL (line 4769) | BOOL OnTranslateAccelerator(LPMSG lpMsg)
  function GetIDD (line 4776) | int GetIDD()
  function virtual (line 4781) | virtual DLGPROC GetDialogProc()
  function INT_PTR (line 4786) | static INT_PTR CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, ...
  function virtual (line 4802) | virtual HRESULT CreateActiveXControls(UINT nID)
  function HRESULT (line 4935) | HRESULT AdviseSinkMap(bool bAdvise)
  type CPropertyPageImpl (line 4953) | typedef CPropertyPageImpl< T, TBase>   _baseClass;
  function MESSAGE_HANDLER (line 4954) | BEGIN_MSG_MAP(CAxPropertyPageImpl)
  function class (line 5060) | class CWizard97SheetWindow : public CPropertySheetWindow
  function HFONT (line 5074) | HFONT GetExteriorPageTitleFont(void)
  function HFONT (line 5080) | HFONT GetBulletFont(void)
  function UINT (line 5087) | static UINT GetMessage_GetExteriorPageTitleFont()
  function UINT (line 5109) | static UINT GetMessage_GetBulletFont()
  function HWND (line 5132) | HWND Create(LPCTSTR, HWND, ATL::_U_RECT = NULL, LPCTSTR = NULL, DWORD = ...
  function OnSheetInitialized (line 5172) | void OnSheetInitialized()
  function _InitializeFonts (line 5182) | void _InitializeFonts()
  function MESSAGE_HANDLER (line 5216) | BEGIN_MSG_MAP(thisClass)
  function class (line 5247) | class CWizard97Sheet : public CWizard97SheetImpl<CWizard97Sheet>
  function class (line 5274) | class CWizard97PageWindow : public CPropertyPageWindow
  function CWizard97SheetWindow (line 5288) | CWizard97SheetWindow GetPropertySheet() const
  function HFONT (line 5301) | HFONT GetBulletFont(void)
  function HWND (line 5308) | HWND Create(LPCTSTR, HWND, ATL::_U_RECT = NULL, LPCTSTR = NULL, DWORD = ...
  type CPropertyPageImpl (line 5348) | typedef CPropertyPageImpl< T, TBase > baseClass;
  type CPropertyPageImpl (line 5374) | typedef CPropertyPageImpl< T, TBase > baseClass;
  function class (line 5405) | class CAeroWizardFrameWindow : public CPropertySheetWindow
  function SetNextText (line 5419) | void SetNextText(LPCWSTR lpszText)
  function ShowWizardButtons (line 5425) | void ShowWizardButtons(DWORD dwButtons, DWORD dwStates)
  function EnableWizardButtons (line 5431) | void EnableWizardButtons(DWORD dwButtons, DWORD dwStates)
  function SetButtonText (line 5437) | void SetButtonText(DWORD dwButton, LPCWSTR lpszText)
  function EnableResizing (line 5460) | void EnableResizing()
  function UseHeaderBitmap (line 5466) | void UseHeaderBitmap()
  function SetNoMargin (line 5472) | void SetNoMargin()
  function class (line 5490) | class CAeroWizardFrame : public CAeroWizardFrameImpl<CAeroWizardFrame>
  function class (line 5506) | class CAeroWizardPageWindow : public CPropertyPageWindow
  function CAeroWizardFrameWindow (line 5520) | CAeroWizardFrameWindow GetAeroWizardFrame() const
  function ShowWizardButtons (line 5535) | void ShowWizardButtons(DWORD dwButtons, DWORD dwStates)
  function EnableWizardButtons (line 5542) | void EnableWizardButtons(DWORD dwButtons, DWORD dwStates)
  function SetButtonText (line 5549) | void SetButtonText(DWORD dwButton, LPCWSTR lpszText)
  function class (line 5680) | class CTaskDialogConfig : public TASKDIALOGCONFIG
  function SetDefaultButton (line 5764) | void SetDefaultButton(int nDefaultButtonArg)
  function SetDefaultRadioButton (line 5778) | void SetDefaultRadioButton(int nDefaultRadioButtonArg)
  function SetVerificationText (line 5784) | void SetVerificationText(UINT nID)
  function SetVerificationText (line 5789) | void SetVerificationText(LPCWSTR lpstrVerificationText)
  function SetExpandedInformationText (line 5795) | void SetExpandedInformationText(UINT nID)
  function SetExpandedInformationText (line 5800) | void SetExpandedInformationText(LPCWSTR lpstrExpandedInformation)
  function SetExpandedControlText (line 5806) | void SetExpandedControlText(UINT nID)
  function SetExpandedControlText (line 5811) | void SetExpandedControlText(LPCWSTR lpstrExpandedControlText)
  function SetCollapsedControlText (line 5817) | void SetCollapsedControlText(UINT nID)
  function SetCollapsedControlText (line 5822) | void SetCollapsedControlText(LPCWSTR lpstrCollapsedControlText)
  function SetFooterIcon (line 5828) | void SetFooterIcon(HICON hIcon)
  function SetFooterIcon (line 5834) | void SetFooterIcon(UINT nID)
  function SetFooterIcon (line 5840) | void SetFooterIcon(LPCWSTR lpstrFooterIcon)
  function SetFooterText (line 5847) | void SetFooterText(UINT nID)
  function SetFooterText (line 5852) | void SetFooterText(LPCWSTR lpstrFooterText)
  function SetWidth (line 5858) | void SetWidth(UINT cxWidthArg)
  function ModifyFlags (line 5864) | void ModifyFlags(DWORD dwRemove, DWORD dwAdd)
  function ATL_NO_VTABLE (line 5875) | ATL_NO_VTABLE CTaskDialogImpl
  function SetCommonButtons (line 5919) | void SetCommonButtons(TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons)
  function SetWindowTitle (line 5922) | void SetWindowTitle(UINT nID)
  function SetWindowTitle (line 5924) | void SetWindowTitle(LPCWSTR lpstrWindowTitle)
  function SetMainIcon (line 5927) | void SetMainIcon(HICON hIcon)
  function SetMainIcon (line 5929) | void SetMainIcon(UINT nID)
  function SetMainIcon (line 5931) | void SetMainIcon(LPCWSTR lpstrMainIcon)
  function SetMainInstructionText (line 5934) | void SetMainInstructionText(UINT nID)
  function SetMainInstructionText (line 5936) | void SetMainInstructionText(LPCWSTR lpstrMainInstruction)
  function SetContentText (line 5939) | void SetContentText(UINT nID)
  function SetContentText (line 5941) | void SetContentText(LPCWSTR lpstrContent)
  function SetDefaultButton (line 5946) | void SetDefaultButton(int nDefaultButton)
  function SetDefaultRadioButton (line 5951) | void SetDefaultRadioButton(int nDefaultRadioButton)
  function SetVerificationText (line 5954) | void SetVerificationText(UINT nID)
  function SetVerificationText (line 5956) | void SetVerificationText(LPCWSTR lpstrVerificationText)
  function SetExpandedInformationText (line 5959) | void SetExpandedInformationText(UINT nID)
  function SetExpandedInformationText (line 5961) | void SetExpandedInformationText(LPCWSTR lpstrExpandedInformation)
  function SetExpandedControlText (line 5964) | void SetExpandedControlText(UINT nID)
  function SetExpandedControlText (line 5966) | void SetExpandedControlText(LPCWSTR lpstrExpandedControlText)
  function SetCollapsedControlText (line 5969) | void SetCollapsedControlText(UINT nID)
  function SetCollapsedControlText (line 5971) | void SetCollapsedControlText(LPCWSTR lpstrCollapsedControlText)
  function SetFooterIcon (line 5974) | void SetFooterIcon(HICON hIcon)
  function SetFooterIcon (line 5976) | void SetFooterIcon(UINT nID)
  function SetFooterIcon (line 5978) | void SetFooterIcon(LPCWSTR lpstrFooterIcon)
  function SetFooterText (line 5981) | void SetFooterText(UINT nID)
  function SetFooterText (line 5983) | void SetFooterText(LPCWSTR lpstrFooterText)
  function SetWidth (line 5986) | void SetWidth(UINT cxWidth)
  function ModifyFlags (line 5989) | void ModifyFlags(DWORD dwRemove, DWORD dwAdd)
  function HRESULT (line 5993) | static HRESULT CALLBACK TaskDialogCallback(HWND hWnd, UINT uMsg, WPARAM ...
  function OnDialogConstructed (line 6045) | void OnDialogConstructed()
  function OnCreated (line 6049) | void OnCreated()
  function BOOL (line 6053) | BOOL OnButtonClicked(int /*nButton*/)
  function OnRadioButtonClicked (line 6058) | void OnRadioButtonClicked(int /*nRadioButton*/)
  function OnHyperlinkClicked (line 6062) | void OnHyperlinkClicked(LPCWSTR /*pszHREF*/)
  function OnExpandoButtonClicked (line 6066) | void OnExpandoButtonClicked(bool /*bExpanded*/)
  function OnVerificationClicked (line 6070) | void OnVerificationClicked(bool /*bChecked*/)
  function OnHelp (line 6074) | void OnHelp()
  function BOOL (line 6078) | BOOL OnTimer(DWORD /*dwTickCount*/)
  function OnNavigated (line 6083) | void OnNavigated()
  function OnDestroyed (line 6087) | void OnDestroyed()
  function NavigatePage (line 6092) | void NavigatePage(TASKDIALOGCONFIG& tdc)
  function NavigatePage (line 6107) | void NavigatePage()
  function ClickButton (line 6113) | void ClickButton(int nButton)
  function SetMarqueeProgressBar (line 6119) | void SetMarqueeProgressBar(BOOL bMarquee)
  function BOOL (line 6125) | BOOL SetProgressBarState(int nNewState)
  function DWORD (line 6131) | DWORD SetProgressBarRange(int nMinRange, int nMaxRange)
  function SetProgressBarPos (line 6137) | int SetProgressBarPos(int nNewPos)
  function BOOL (line 6143) | BOOL SetProgressBarMarquee(BOOL bMarquee, UINT uSpeed)
  function SetElementText (line 6149) | void SetElementText(TASKDIALOG_ELEMENTS element, LPCWSTR lpstrText)
  function ClickRadioButton (line 6155) | void ClickRadioButton(int nRadioButton)
  function EnableButton (line 6161) | void EnableButton(int nButton, BOOL bEnable)
  function EnableRadioButton (line 6167) | void EnableRadioButton(int nButton, BOOL bEnable)
  function ClickVerification (line 6173) | void ClickVerification(BOOL bCheck, BOOL bFocus)
  function UpdateElementText (line 6179) | void UpdateElementText(TASKDIALOG_ELEMENTS element, LPCWSTR lpstrText)
  function SetButtonElevationRequiredState (line 6185) | void SetButtonElevationRequiredState(int nButton, BOOL bElevation)
  function UpdateIcon (line 6191) | void UpdateIcon(TASKDIALOG_ICON_ELEMENTS element, HICON hIcon)
  function UpdateIcon (line 6203) | void UpdateIcon(TASKDIALOG_ICON_ELEMENTS element, LPCWSTR lpstrIcon)
  function class (line 6220) | class CTaskDialog : public CTaskDialogImpl<CTaskDialog>

FILE: third_party/WTL/Include/atldwm.h
  function namespace (line 50) | namespace WTL
  type CDwmWindowT (line 270) | typedef CDwmWindowT<ATL::CWindow>	CDwmWindow;
  function Attach (line 300) | void Attach(HTHUMBNAIL hThumbnailNew)
  function HTHUMBNAIL (line 307) | HTHUMBNAIL Detach()
  function HRESULT (line 314) | HRESULT Register(HWND hwndDestination, HWND hwndSource)
  function HRESULT (line 326) | HRESULT Unregister()
  function HRESULT (line 344) | HRESULT UpdateProperties(const DWM_THUMBNAIL_PROPERTIES* ptnProperties)
  function HRESULT (line 354) | HRESULT QuerySourceSize(PSIZE pSize)
  type CBufferedPaintImpl (line 380) | typedef CBufferedPaintImpl<T> _baseClass;
  type ATL (line 381) | typedef ATL::CWindowImpl<T, TBase, TWinTraits> _windowClass;
  function LPCWSTR (line 388) | static LPCWSTR GetThemeName()
  function MESSAGE_HANDLER (line 399) | BEGIN_MSG_MAP(CAeroControlImpl)
  function BOOL (line 425) | BOOL SubclassWindow(HWND hWnd)
  function LRESULT (line 440) | LRESULT DefWindowProc()
  function LRESULT (line 450) | LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
  function DoBufferedPaint (line 460) | void DoBufferedPaint(HDC hDC, RECT& rcPaint)
  function Init (line 478) | void Init()
  function DoAeroPaint (line 487) | void DoAeroPaint(HDC hDC, RECT& /*rcClient*/, RECT& rcPaint)

FILE: third_party/WTL/Include/atlfind.h
  function namespace (line 35) | namespace WTL
  function AdjustDialogPosition (line 215) | void AdjustDialogPosition(HWND hWndDialog)
  function DWORD (line 245) | DWORD GetFindReplaceDialogFlags() const
  function BOOL (line 294) | BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bMatchCase, BOOL /*bWholeW...
  function TextNotFound (line 315) | void TextNotFound(LPCTSTR lpszFind)
  type TranslationTextItem (line 322) | enum TranslationTextItem
  function OnFindNext (line 345) | void OnFindNext(LPCTSTR lpszFind, BOOL bFindDown, BOOL bMatchCase, BOOL ...
  function OnReplaceSel (line 360) | void OnReplaceSel(LPCTSTR lpszFind, BOOL bFindDown, BOOL bMatchCase, BOO...
  function OnReplaceAll (line 379) | void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace, BOOL bMatchCase...
  function OnReplaceAllCoreBegin (line 411) | void OnReplaceAllCoreBegin()
  function OnReplaceAllCoreEnd (line 421) | void OnReplaceAllCoreEnd(int replaceCount)
  function OnTextNotFound (line 448) | void OnTextNotFound(LPCTSTR lpszFind)
  function OnTerminatingFindReplaceDialog (line 475) | void OnTerminatingFindReplaceDialog(TFindReplaceDialog*& /*findReplaceDi...
  type CEditFindReplaceImplBase (line 503) | typedef CEditFindReplaceImplBase<T, TFindReplaceDialog> baseClass;
  function LPCTSTR (line 683) | LPCTSTR LockBuffer() const
  function UINT (line 719) | UINT GetBufferLength() const
  function LONG (line 742) | LONG GetSelText(ATL::CString& strText) const
  type CEditFindReplaceImplBase (line 782) | typedef CEditFindReplaceImplBase<T, TFindReplaceDialog> baseClass;
  function FindAndSelect (line 872) | long FindAndSelect(DWORD dwFlags, FINDTEXTEX& ft)

FILE: third_party/WTL/Include/atlframe.h
  function namespace (line 44) | namespace WTL
  function SizeSimpleReBarBands (line 559) | void SizeSimpleReBarBands()
  function BOOL (line 635) | BOOL PreTranslateMessage(MSG* pMsg)
  function MESSAGE_HANDLER (line 642) | BEGIN_MSG_MAP(CFrameWindowImplBase)
  function LRESULT (line 660) | LRESULT OnMenuSelect(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& ...
  function LRESULT (line 722) | LRESULT OnToolTipTextA(int idCtrl, LPNMHDR pnmh, BOOL& /*bHandled*/)
  function LRESULT (line 745) | LRESULT OnToolTipTextW(int idCtrl, LPNMHDR pnmh, BOOL& /*bHandled*/)
  function PrepareChevronMenu (line 769) | bool PrepareChevronMenu(_ChevronMenuInfo& cmi)
  function DisplayChevronMenu (line 870) | void DisplayChevronMenu(_ChevronMenuInfo& cmi)
  function CleanupChevronMenu (line 897) | void CleanupChevronMenu(_ChevronMenuInfo& cmi)
  type CFrameWindowImplBase (line 965) | typedef CFrameWindowImplBase< TBase, TWinTraits >   _baseClass;
  function LRESULT (line 988) | LRESULT OnReBarAutoSize(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandl...
  function LRESULT (line 995) | LRESULT OnChevronPushed(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
  function class (line 1031) | class CMDIWindow : public ATL::CWindow
  function MDIActivate (line 1055) | void MDIActivate(HWND hWndChildToActivate)
  function MDIMaximize (line 1069) | void MDIMaximize(HWND hWndChildToMaximize)
  function MDIRestore (line 1076) | void MDIRestore(HWND hWndChildToRestore)
  function MDIDestroy (line 1083) | void MDIDestroy(HWND hWndChildToDestroy)
  function BOOL (line 1096) | BOOL MDITile(UINT uFlags = MDITILE_HORIZONTAL)
  function MDIIconArrange (line 1102) | void MDIIconArrange()
  function HMENU (line 1108) | HMENU MDISetMenu(HMENU hMenuFrame, HMENU hMenuWindow)
  function HMENU (line 1114) | HMENU MDIRefreshMenu()
  function HMENU (line 1121) | static HMENU GetStandardWindowMenu(HMENU hMenu)
  function SetMDIFrameMenu (line 1140) | void SetMDIFrameMenu()
  function virtual (line 1212) | virtual WNDPROC GetWindowProc()
  function LRESULT (line 1217) | static LRESULT CALLBACK MDIFrameWindowProc(HWND hWnd, UINT uMsg, WPARAM ...
  function LRESULT (line 1261) | LRESULT DefWindowProc()
  function LRESULT (line 1270) | LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
  function BOOL (line 1275) | BOOL PreTranslateMessage(MSG* pMsg)
  type CFrameWindowImplBase (line 1323) | typedef CFrameWindowImplBase<TBase, TWinTraits >   _baseClass;
  function MESSAGE_HANDLER (line 1325) | BEGIN_MSG_MAP(CMDIFrameWindowImpl)
  function LRESULT (line 1347) | LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHan...
  function LRESULT (line 1360) | LRESULT OnReBarAutoSize(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandl...
  function LRESULT (line 1367) | LRESULT OnChevronPushed(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
  type CFrameWindowImplBase (line 1503) | typedef CFrameWindowImplBase<TBase, TWinTraits >   _baseClass;
  function MESSAGE_HANDLER (line 1504) | BEGIN_MSG_MAP(CMDIChildWindowImpl)
  function LRESULT (line 1529) | LRESULT OnWindowPosChanged(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lPar...
  function LRESULT (line 1551) | LRESULT OnMouseActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /...
  function LRESULT (line 1565) | LRESULT OnMenuSelect(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bH...
  function LRESULT (line 1570) | LRESULT OnMDIActivate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, B...
  function LRESULT (line 1594) | LRESULT OnReBarAutoSize(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandl...
  function LRESULT (line 1601) | LRESULT OnChevronPushed(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
  function LRESULT (line 1649) | LRESULT OnMeasureItem(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, B...
  function LRESULT (line 1658) | LRESULT OnCompareItem(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, B...
  function LRESULT (line 1666) | LRESULT OnDeleteItem(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BO...
  function DrawItem (line 1676) | void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/)
  function MeasureItem (line 1682) | void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
  function CompareItem (line 1699) | int CompareItem(LPCOMPAREITEMSTRUCT /*lpCompareItemStruct*/)
  function DeleteItem (line 1705) | void DeleteItem(LPDELETEITEMSTRUCT /*lpDeleteItemStruct*/)
  function class (line 1734) | class CUpdateUIBase
  function BOOL (line 2190) | BOOL UISetState(int nID, DWORD dwState)
  function DWORD (line 2208) | DWORD UIGetState(int nID)
  function UIUpdateMenuBarElement (line 2361) | static void UIUpdateMenuBarElement(int nID, _AtlUpdateUIData* pUIData, H...
  function UIUpdateToolBarElement (line 2403) | static void UIUpdateToolBarElement(int nID, _AtlUpdateUIData* pUIData, H...
  function UIUpdateStatusBarElement (line 2412) | static void UIUpdateStatusBarElement(int nID, _AtlUpdateUIData* pUIData,...
  function UIUpdateChildWindow (line 2419) | static void UIUpdateChildWindow(int nID, _AtlUpdateUIData* pUIData, HWND...
  function UIAddUpdateElement (line 2556) | bool UIAddUpdateElement(WORD nID, WORD wType)
  function UIRemoveUpdateElement (line 2599) | bool UIRemoveUpdateElement(WORD nID)
  function UIAddToolBar (line 2723) | bool UIAddToolBar(HWND hWndToolBar)
  function UIAddChildWindowContainer (line 2743) | bool UIAddChildWindowContainer(HWND hWnd)
  type _AtlDlgResizeMap (line 2818) | struct _AtlDlgResizeMap
  function SetGroupCount (line 2867) | struct _AtlDlgResizeData
  function m_bGripper (line 2897) | m_bGripper(false)
  function DlgResize_UpdateLayout (line 3041) | void DlgResize_UpdateLayout(int cxWidth, int cyHeight)
  function MESSAGE_HANDLER (line 3100) | BEGIN_MSG_MAP(CDialogResize)
  function LRESULT (line 3124) | LRESULT OnGetMinMaxInfo(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam,...
  type _AtlDynamicLayoutData (line 3267) | struct _AtlDynamicLayoutData
  function m_bGripper (line 3284) | m_bGripper(false)
  function UpdateDynamicLayout (line 3390) | void UpdateDynamicLayout()
  function MESSAGE_HANDLER (line 3451) | BEGIN_MSG_MAP(CDynamicDialogLayout)
  function LRESULT (line 3478) | LRESULT OnGetMinMaxInfo(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam,...
  function _GetDataPct (line 3490) | char _GetDataPct(WORD wResData)
  function MESSAGE_HANDLER (line 3519) | BEGIN_MSG_MAP(CDoubleBufferImpl)
  function LRESULT (line 3530) | LRESULT OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /...

FILE: third_party/WTL/Include/atlgdi.h
  function namespace (line 57) | namespace WTL
  function HPEN (line 158) | HPEN CreatePenIndirect(LPLOGPEN lpLogPen)
  function BOOL (line 165) | BOOL DeleteObject()
  function GetLogPen (line 175) | int GetLogPen(LOGPEN* pLogPen) const
  function GetLogPen (line 181) | bool GetLogPen(LOGPEN& LogPen) const
  type CPenT (line 201) | typedef CPenT<false>   CPenHandle;
  type CPenT (line 202) | typedef CPenT<true>    CPen;
  function Attach (line 231) | void Attach(HBRUSH hBrush)
  function HBRUSH (line 238) | HBRUSH Detach()
  function HBRUSH (line 250) | HBRUSH CreateSolidBrush(COLORREF crColor)
  function HBRUSH (line 257) | HBRUSH CreateHatchBrush(int nIndex, COLORREF crColor)
  function HBRUSH (line 264) | HBRUSH CreateBrushIndirect(const LOGBRUSH* lpLogBrush)
  function HBRUSH (line 271) | HBRUSH CreatePatternBrush(HBITMAP hBitmap)
  function HBRUSH (line 278) | HBRUSH CreateDIBPatternBrush(HGLOBAL hPackedDIB, UINT nUsage)
  function HBRUSH (line 288) | HBRUSH CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage)
  function HBRUSH (line 295) | HBRUSH CreateSysColorBrush(int nIndex)
  function BOOL (line 302) | BOOL DeleteObject()
  function GetLogBrush (line 312) | int GetLogBrush(LOGBRUSH* pLogBrush) const
  function GetLogBrush (line 318) | bool GetLogBrush(LOGBRUSH& LogBrush) const
  type CBrushT (line 325) | typedef CBrushT<false>   CBrushHandle;
  type CBrushT (line 326) | typedef CBrushT<true>    CBrush;
  function class (line 332) | class CLogFont : public LOGFONT
  function HFONT (line 351) | HFONT CreateFontIndirect()
  function SetBold (line 356) | void SetBold()
  function MakeLarger (line 371) | void MakeLarger(int iScale)
  function SetCaptionFont (line 427) | void SetCaptionFont()
  function SetMenuFont (line 434) | void SetMenuFont()
  function SetStatusFont (line 441) | void SetStatusFont()
  function SetMessageBoxFont (line 448) | void SetMessageBoxFont()
  function Copy (line 455) | void Copy(const LOGFONT* pLogFont)
  function Attach (line 523) | void Attach(HFONT hFont)
  function HFONT (line 530) | HFONT Detach()
  function HFONT (line 542) | HFONT CreateFontIndirect(const LOGFONT* lpLogFont)
  function HFONT (line 549) | HFONT CreateFontIndirectEx(CONST ENUMLOGFONTEXDV* penumlfex)
  function HFONT (line 556) | HFONT CreateFont(int nHeight, int nWidth, int nEscapement,
  function BOOL (line 604) | BOOL DeleteObject()
  function GetLogFont (line 614) | int GetLogFont(LOGFONT* pLogFont) const
  function GetLogFont (line 620) | bool GetLogFont(LOGFONT& LogFont) const
  type CFontT (line 627) | typedef CFontT<false>   CFontHandle;
  type CFontT (line 628) | typedef CFontT<true>    CFont;
  function Attach (line 657) | void Attach(HBITMAP hBitmap)
  function HBITMAP (line 664) | HBITMAP Detach()
  function HBITMAP (line 676) | HBITMAP LoadBitmap(ATL::_U_STRINGorID bitmap)
  function HBITMAP (line 683) | HBITMAP LoadOEMBitmap(UINT nIDBitmap) // for OBM_/OCR_/OIC_
  function HBITMAP (line 697) | HBITMAP CreateBitmap(int nWidth, int nHeight, UINT nPlanes, UINT nBitsPe...
  function HBITMAP (line 704) | HBITMAP CreateBitmapIndirect(LPBITMAP lpBitmap)
  function HBITMAP (line 711) | HBITMAP CreateCompatibleBitmap(HDC hDC, int nWidth, int nHeight)
  function HBITMAP (line 718) | HBITMAP CreateDiscardableBitmap(HDC hDC, int nWidth, int nHeight)
  function BOOL (line 725) | BOOL DeleteObject()
  function GetBitmap (line 735) | int GetBitmap(BITMAP* pBitMap) const
  function GetBitmap (line 741) | bool GetBitmap(BITMAP& bm) const
  function GetSize (line 747) | bool GetSize(SIZE& size) const
  function DWORD (line 758) | DWORD GetBitmapBits(DWORD dwCount, LPVOID lpBits) const
  function DWORD (line 764) | DWORD SetBitmapBits(DWORD dwCount, const void* lpBits)
  function BOOL (line 770) | BOOL GetBitmapDimension(LPSIZE lpSize) const
  function HBITMAP (line 783) | HBITMAP CreateDIBitmap(HDC hDC, CONST BITMAPINFOHEADER* lpbmih, DWORD dw...
  function HBITMAP (line 790) | HBITMAP CreateDIBSection(HDC hDC, CONST BITMAPINFO* lpbmi, UINT uColorUs...
  function GetDIBits (line 797) | int GetDIBits(HDC hDC, UINT uStartScan, UINT cScanLines,  LPVOID lpvBits...
  function SetDIBits (line 803) | int SetDIBits(HDC hDC, UINT uStartScan, UINT cScanLines, CONST VOID* lpv...
  type CBitmapT (line 810) | typedef CBitmapT<false>   CBitmapHandle;
  type CBitmapT (line 811) | typedef CBitmapT<true>    CBitmap;
  function Attach (line 840) | void Attach(HPALETTE hPalette)
  function HPALETTE (line 847) | HPALETTE Detach()
  function HPALETTE (line 859) | HPALETTE CreatePalette(LPLOGPALETTE lpLogPalette)
  function HPALETTE (line 866) | HPALETTE CreateHalftonePalette(HDC hDC)
  function BOOL (line 874) | BOOL DeleteObject()
  function UINT (line 892) | UINT GetPaletteEntries(UINT nStartIndex, UINT nNumEntries, LPPALETTEENTR...
  function UINT (line 898) | UINT SetPaletteEntries(UINT nStartIndex, UINT nNumEntries, LPPALETTEENTR...
  function AnimatePalette (line 905) | void AnimatePalette(UINT nStartIndex, UINT nNumEntries, LPPALETTEENTRY l...
  function BOOL (line 911) | BOOL ResizePalette(UINT nNumEntries)
  function UINT (line 917) | UINT GetNearestPaletteIndex(COLORREF crColor) const
  type CPaletteT (line 924) | typedef CPaletteT<false>   CPaletteHandle;
  type CPaletteT (line 925) | typedef CPaletteT<true>    CPalette;
  function Attach (line 954) | void Attach(HRGN hRgn)
  function HRGN (line 961) | HRGN Detach()
  function HRGN (line 973) | HRGN CreateRectRgn(int x1, int y1, int x2, int y2)
  function HRGN (line 980) | HRGN CreateRectRgnIndirect(LPCRECT lpRect)
  function HRGN (line 987) | HRGN CreateEllipticRgn(int x1, int y1, int x2, int y2)
  function HRGN (line 994) | HRGN CreateEllipticRgnIndirect(LPCRECT lpRect)
  function HRGN (line 1001) | HRGN CreatePolygonRgn(const POINT* lpPoints, int nCount, int nMode)
  function HRGN (line 1008) | HRGN CreatePolyPolygonRgn(const POINT* lpPoints, const INT* lpPolyCounts...
  function HRGN (line 1015) | HRGN CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3)
  function HRGN (line 1022) | HRGN CreateFromPath(HDC hDC)
  function HRGN (line 1030) | HRGN CreateFromData(const XFORM* lpXForm, int nCount, const RGNDATA* pRg...
  function BOOL (line 1037) | BOOL DeleteObject()
  function SetRectRgn (line 1047) | void SetRectRgn(int x1, int y1, int x2, int y2)
  function SetRectRgn (line 1053) | void SetRectRgn(LPCRECT lpRect)
  function CombineRgn (line 1059) | int CombineRgn(HRGN hRgnSrc1, HRGN hRgnSrc2, int nCombineMode)
  function CombineRgn (line 1065) | int CombineRgn(HRGN hRgnSrc, int nCombineMode)
  function CopyRgn (line 1071) | int CopyRgn(HRGN hRgnSrc)
  function BOOL (line 1077) | BOOL EqualRgn(HRGN hRgn) const
  function OffsetRgn (line 1083) | int OffsetRgn(int x, int y)
  function OffsetRgn (line 1089) | int OffsetRgn(POINT point)
  function GetRgnBox (line 1095) | int GetRgnBox(LPRECT lpRect) const
  function BOOL (line 1101) | BOOL PtInRegion(int x, int y) const
  function BOOL (line 1107) | BOOL PtInRegion(POINT point) const
  function BOOL (line 1113) | BOOL RectInRegion(LPCRECT lpRect) const
  function GetRegionData (line 1119) | int GetRegionData(LPRGNDATA lpRgnData, int nDataSize) const
  type CRgnT (line 1126) | typedef CRgnT<false>   CRgnHandle;
  type CRgnT (line 1127) | typedef CRgnT<true>    CRgn;
  type CDCT (line 1135) | typedef CDCT<false>   CDCHandle;
  type CDCT (line 1136) | typedef CDCT<true>    CDC;
  function Attach (line 1162) | void Attach(HDC hDC)
  function HDC (line 1169) | HDC Detach()
  function HDC (line 1217) | HDC CreateDC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName, LPCTSTR lps...
  function BOOL (line 1231) | BOOL DeleteDC()
  function SaveDC (line 1242) | int SaveDC()
  function BOOL (line 1248) | BOOL RestoreDC(int nSavedDC)
  function GetDeviceCaps (line 1254) | int GetDeviceCaps(int nIndex) const
  function UINT (line 1260) | UINT SetBoundsRect(LPCRECT lpRectBounds, UINT flags)
  function UINT (line 1266) | UINT GetBoundsRect(LPRECT lpRectBounds, UINT flags) const
  function BOOL (line 1272) | BOOL ResetDC(const DEVMODE* lpDevMode)
  function BOOL (line 1279) | BOOL GetBrushOrg(LPPOINT lpPoint) const
  function EnumObjects (line 1297) | int EnumObjects(int nObjectType, int (CALLBACK* lpfn)(LPVOID, LPARAM), L...
  function HPEN (line 1308) | HPEN SelectPen(HPEN hPen)
  function HBRUSH (line 1315) | HBRUSH SelectBrush(HBRUSH hBrush)
  function HFONT (line 1322) | HFONT SelectFont(HFONT hFont)
  function HBITMAP (line 1329) | HBITMAP SelectBitmap(HBITMAP hBitmap)
  function SelectRgn (line 1336) | int SelectRgn(HRGN hRgn)       // special return for regions
  function HPEN (line 1344) | HPEN SelectStockPen(int nPen)
  function HBRUSH (line 1351) | HBRUSH SelectStockBrush(int nBrush)
  function HFONT (line 1357) | HFONT SelectStockFont(int nFont)
  function HPALETTE (line 1363) | HPALETTE SelectStockPalette(int nPalette, BOOL bForceBackground)
  function COLORREF (line 1370) | COLORREF GetNearestColor(COLORREF crColor) const
  function HPALETTE (line 1376) | HPALETTE SelectPalette(HPALETTE hPalette, BOOL bForceBackground)
  function UINT (line 1383) | UINT RealizePalette()
  function UpdateColors (line 1389) | void UpdateColors()
  function COLORREF (line 1432) | COLORREF SetBkColor(COLORREF crColor)
  function SetBkMode (line 1438) | int SetBkMode(int nBkMode)
  function SetPolyFillMode (line 1444) | int SetPolyFillMode(int nPolyFillMode)
  function SetROP2 (line 1450) | int SetROP2(int nDrawMode)
  function SetStretchBltMode (line 1456) | int SetStretchBltMode(int nStretchMode)
  function COLORREF (line 1462) | COLORREF SetTextColor(COLORREF crColor)
  function BOOL (line 1468) | BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const
  function BOOL (line 1474) | BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust)
  function BOOL (line 1487) | BOOL GetViewportOrg(LPPOINT lpPoint) const
  function SetMapMode (line 1493) | int SetMapMode(int nMapMode)
  function BOOL (line 1519) | BOOL GetViewportExt(LPSIZE lpSize) const
  function BOOL (line 1544) | BOOL GetWindowOrg(LPPOINT lpPoint) const
  function BOOL (line 1569) | BOOL GetWindowExt(LPSIZE lpSize) const
  function BOOL (line 1600) | BOOL DPtoLP(LPRECT lpRect) const
  function BOOL (line 1606) | BOOL DPtoLP(LPSIZE lpSize) const
  function BOOL (line 1625) | BOOL LPtoDP(LPRECT lpRect) const
  function BOOL (line 1631) | BOOL LPtoDP(LPSIZE lpSize) const
  function DPtoHIMETRIC (line 1647) | void DPtoHIMETRIC(LPSIZE lpSize)
  function HIMETRICtoDP (line 1669) | void HIMETRICtoDP(LPSIZE lpSize)
  function LPtoHIMETRIC (line 1691) | void LPtoHIMETRIC(LPSIZE lpSize)
  function HIMETRICtoLP (line 1697) | void HIMETRICtoLP(LPSIZE lpSize)
  function BOOL (line 1704) | BOOL FillRgn(HRGN hRgn, HBRUSH hBrush)
  function BOOL (line 1710) | BOOL FrameRgn(HRGN hRgn, HBRUSH hBrush, int nWidth, int nHeight)
  function BOOL (line 1716) | BOOL InvertRgn(HRGN hRgn)
  function BOOL (line 1722) | BOOL PaintRgn(HRGN hRgn)
  function GetClipBox (line 1729) | int GetClipBox(LPRECT lpRect) const
  function GetClipRgn (line 1735) | int GetClipRgn(CRgn& region) const
  function BOOL (line 1748) | BOOL PtVisible(int x, int y) const
  function BOOL (line 1754) | BOOL PtVisible(POINT point) const
  function BOOL (line 1760) | BOOL RectVisible(LPCRECT lpRect) const
  function SelectClipRgn (line 1766) | int SelectClipRgn(HRGN hRgn)
  function ExcludeClipRect (line 1772) | int ExcludeClipRect(int x1, int y1, int x2, int y2)
  function ExcludeClipRect (line 1778) | int ExcludeClipRect(LPCRECT lpRect)
  function ExcludeUpdateRgn (line 1784) | int ExcludeUpdateRgn(HWND hWnd)
  function IntersectClipRect (line 1790) | int IntersectClipRect(int x1, int y1, int x2, int y2)
  function IntersectClipRect (line 1796) | int IntersectClipRect(LPCRECT lpRect)
  function OffsetClipRgn (line 1802) | int OffsetClipRgn(int x, int y)
  function OffsetClipRgn (line 1808) | int OffsetClipRgn(SIZE size)
  function SelectClipRgn (line 1814) | int SelectClipRgn(HRGN hRgn, int nMode)
  function BOOL (line 1821) | BOOL GetCurrentPosition(LPPOINT lpPoint) const
  function BOOL (line 1839) | BOOL LineTo(int x, int y)
  function BOOL (line 1845) | BOOL LineTo(POINT point)
  function BOOL (line 1851) | BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
  function BOOL (line 1857) | BOOL Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
  function BOOL (line 1865) | BOOL Polyline(const POINT* lpPoints, int nCount)
  function BOOL (line 1871) | BOOL AngleArc(int x, int y, int nRadius, float fStartAngle, float fSweep...
  function BOOL (line 1877) | BOOL ArcTo(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
  function BOOL (line 1883) | BOOL ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
  function SetArcDirection (line 1896) | int SetArcDirection(int nArcDirection)
  function BOOL (line 1902) | BOOL PolyDraw(const POINT* lpPoints, const BYTE* lpTypes, int nCount)
  function BOOL (line 1908) | BOOL PolylineTo(const POINT* lpPoints, int nCount)
  function BOOL (line 1914) | BOOL PolyPolyline(const POINT* lpPoints,
  function BOOL (line 1921) | BOOL PolyBezier(const POINT* lpPoints, int nCount)
  function BOOL (line 1927) | BOOL PolyBezierTo(const POINT* lpPoints, int nCount)
  function BOOL (line 1934) | BOOL FillRect(LPCRECT lpRect, HBRUSH hBrush)
  function BOOL (line 1940) | BOOL FillRect(LPCRECT lpRect, int nColorIndex)
  function BOOL (line 1946) | BOOL FrameRect(LPCRECT lpRect, HBRUSH hBrush)
  function BOOL (line 1952) | BOOL InvertRect(LPCRECT lpRect)
  function BOOL (line 1958) | BOOL DrawIcon(int x, int y, HICON hIcon)
  function BOOL (line 1964) | BOOL DrawIcon(POINT point, HICON hIcon)
  function BOOL (line 2007) | BOOL Chord(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
  function BOOL (line 2013) | BOOL Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
  function DrawFocusRect (line 2019) | void DrawFocusRect(LPCRECT lpRect)
  function BOOL (line 2025) | BOOL Ellipse(int x1, int y1, int x2, int y2)
  function BOOL (line 2031) | BOOL Ellipse(LPCRECT lpRect)
  function BOOL (line 2037) | BOOL Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
  function BOOL (line 2043) | BOOL Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
  function BOOL (line 2049) | BOOL Polygon(const POINT* lpPoints, int nCount)
  function BOOL (line 2055) | BOOL PolyPolygon(const POINT* lpPoints, const INT* lpPolyCounts, int nCo...
  function BOOL (line 2061) | BOOL Rectangle(int x1, int y1, int x2, int y2)
  function BOOL (line 2067) | BOOL Rectangle(LPCRECT lpRect)
  function BOOL (line 2073) | BOOL RoundRect(int x1, int y1, int x2, int y2, int x3, int y3)
  function BOOL (line 2079) | BOOL RoundRect(LPCRECT lpRect, POINT point)
  function BOOL (line 2086) | BOOL PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop)
  function BOOL (line 2092) | BOOL BitBlt(int x, int y, int nWidth, int nHeight, HDC hSrcDC,
  function BOOL (line 2099) | BOOL StretchBlt(int x, int y, int nWidth, int nHeight, HDC hSrcDC, int x...
  function COLORREF (line 2105) | COLORREF GetPixel(int x, int y) const
  function COLORREF (line 2111) | COLORREF GetPixel(POINT point) const
  function COLORREF (line 2117) | COLORREF SetPixel(int x, int y, COLORREF crColor)
  function COLORREF (line 2123) | COLORREF SetPixel(POINT point, COLORREF crColor)
  function BOOL (line 2129) | BOOL FloodFill(int x, int y, COLORREF crColor)
  function BOOL (line 2135) | BOOL ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType)
  function BOOL (line 2141) | BOOL MaskBlt(int x, int y, int nWidth, int nHeight, HDC hSrcDC, int xSrc...
  function BOOL (line 2147) | BOOL PlgBlt(LPPOINT lpPoint, HDC hSrcDC, int xSrc, int ySrc, int nWidth,...
  function BOOL (line 2153) | BOOL SetPixelV(int x, int y, COLORREF crColor)
  function BOOL (line 2159) | BOOL SetPixelV(POINT point, COLORREF crColor)
  function BOOL (line 2165) | BOOL TransparentBlt(int x, int y, int nWidth, int nHeight, HDC hSrcDC, i...
  function BOOL (line 2171) | BOOL GradientFill(const PTRIVERTEX pVertices, DWORD nVertices, void* pMe...
  function BOOL (line 2177) | BOOL GradientFillRect(RECT& rect, COLORREF clr1, COLORREF clr2, bool bHo...
  function BOOL (line 2202) | BOOL AlphaBlend(int x, int y, int nWidth, int nHeight, HDC hSrcDC, int x...
  function BOOL (line 2212) | BOOL DitherBlt(int x, int y, int nWidth, int nHeight, HDC hSrcDC, HBITMA...
  function DrawText (line 2348) | int DrawText(LPCTSTR lpstrText, int cchText, LPRECT lpRect, UINT uFormat)
  function DrawText (line 2355) | int DrawText(LPTSTR lpstrText, int cchText, LPRECT lpRect, UINT uFormat)
  function DrawShadowText (line 2368) | int DrawShadowText(LPCWSTR lpstrText, int cchText, LPRECT lpRect, DWORD ...
  function BOOL (line 2375) | BOOL GetTextExtent(LPCTSTR lpszString, int nCount, LPSIZE lpSize) const
  function BOOL (line 2397) | BOOL GrayString(HBRUSH hBrush, BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, ...
  function UINT (line 2409) | UINT SetTextAlign(UINT nFlags)
  function GetTextFace (line 2415) | int GetTextFace(LPTSTR lpszFacename, int nCount) const
  function BOOL (line 2428) | BOOL GetTextFace(BSTR& bstrFace) const
  function GetTextFace (line 2452) | int GetTextFace(ATL::CString& strFace) const
  function BOOL (line 2469) | BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const
  function SetTextJustification (line 2475) | int SetTextJustification(int nBreakExtra, int nBreakCount)
  function SetTextCharacterExtra (line 2487) | int SetTextCharacterExtra(int nCharExtra)
  function BOOL (line 2494) | BOOL DrawEdge(LPRECT lpRect, UINT nEdge, UINT nFlags)
  function BOOL (line 2500) | BOOL DrawFrameControl(LPRECT lpRect, UINT nType, UINT nState)
  function BOOL (line 2507) | BOOL ScrollDC(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip, ...
  function BOOL (line 2514) | BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
  function BOOL (line 2521) | BOOL GetCharWidth32(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
  function DWORD (line 2527) | DWORD SetMapperFlags(DWORD dwFlag)
  function BOOL (line 2533) | BOOL GetAspectRatioFilter(LPSIZE lpSize) const
  function BOOL (line 2539) | BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const
  function DWORD (line 2545) | DWORD GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData, DWORD cb...
  function GetKerningPairs (line 2551) | int GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const
  function UINT (line 2557) | UINT GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const
  function DWORD (line 2563) | DWORD GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm, DWO...
  function BOOL (line 2569) | BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABCFLOAT lpABCF...
  function BOOL (line 2575) | BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar, float* lpFloatBuffer)...
  function Escape (line 2582) | int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData)
  function Escape (line 2588) | int Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
  function DrawEscape (line 2595) | int DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData)
  function StartDoc (line 2602) | int StartDoc(LPCTSTR lpszDocName)  // old Win3.0 version
  function StartDoc (line 2610) | int StartDoc(LPDOCINFO lpDocInfo)
  function StartPage (line 2616) | int StartPage()
  function EndPage (line 2622) | int EndPage()
  function SetAbortProc (line 2628) | int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int))
  function AbortDoc (line 2634) | int AbortDoc()
  function EndDoc (line 2640) | int EndDoc()
  function BOOL (line 2647) | BOOL PlayMetaFile(HMETAFILE hMF)
  function BOOL (line 2660) | BOOL PlayMetaFile(HENHMETAFILE hEnhMetaFile, LPCRECT lpBounds)
  function BOOL (line 2666) | BOOL AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData) // can...
  function EnumMetaFileProc (line 2673) | static int CALLBACK EnumMetaFileProc(HDC hDC, HANDLETABLE* pHandleTable,...
  function BOOL (line 2761) | BOOL AbortPath()
  function BOOL (line 2767) | BOOL BeginPath()
  function BOOL (line 2773) | BOOL CloseFigure()
  function BOOL (line 2779) | BOOL EndPath()
  function BOOL (line 2785) | BOOL FillPath()
  function BOOL (line 2791) | BOOL FlattenPath()
  function BOOL (line 2797) | BOOL StrokeAndFillPath()
  function BOOL (line 2803) | BOOL StrokePath()
  function BOOL (line 2809) | BOOL WidenPath()
  function BOOL (line 2815) | BOOL GetMiterLimit(PFLOAT pfMiterLimit) const
  function BOOL (line 2821) | BOOL SetMiterLimit(float fMiterLimit)
  function GetPath (line 2827) | int GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const
  function BOOL (line 2833) | BOOL SelectClipPath(int nMode)
  function CBrushHandle (line 2840) | static CBrushHandle PASCAL GetHalftoneBrush()
  function FillSolidRect (line 2919) | void FillSolidRect(LPCRECT lpRect, COLORREF clr)
  function FillSolidRect (line 2932) | void FillSolidRect(int x, int y, int cx, int cy, COLORREF clr)
  function Draw3dRect (line 2940) | void Draw3dRect(LPCRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomR...
  function Draw3dRect (line 2946) | void Draw3dRect(int x, int y, int cx, int cy, COLORREF clrTopLeft, COLOR...
  function SetDIBitsToDevice (line 2955) | int SetDIBitsToDevice(int x, int y, DWORD dwWidth, DWORD dwHeight, int x...
  function StretchDIBits (line 2961) | int StretchDIBits(int x, int y, int nWidth, int nHeight, int xSrc, int y...
  function UINT (line 2967) | UINT GetDIBColorTable(UINT uStartIndex, UINT cEntries, RGBQUAD* pColors)...
  function UINT (line 2973) | UINT SetDIBColorTable(UINT uStartIndex, UINT cEntries, CONST RGBQUAD* pC...
  function ChoosePixelFormat (line 2981) | int ChoosePixelFormat(CONST PIXELFORMATDESCRIPTOR* ppfd)
  function DescribePixelFormat (line 2987) | int DescribePixelFormat(int iPixelFormat, UINT nBytes, LPPIXELFORMATDESC...
  function BOOL (line 2999) | BOOL SetPixelFormat(int iPixelFormat, CONST PIXELFORMATDESCRIPTOR* ppfd)
  function BOOL (line 3005) | BOOL SwapBuffers()
  function HGLRC (line 3011) | HGLRC wglCreateContext()
  function HGLRC (line 3017) | HGLRC wglCreateLayerContext(int iLayerPlane)
  function BOOL (line 3023) | BOOL wglMakeCurrent(HGLRC hglrc)
  function BOOL (line 3029) | BOOL wglUseFontBitmaps(DWORD dwFirst, DWORD dwCount, DWORD listBase)
  function BOOL (line 3035) | BOOL wglUseFontOutlines(DWORD dwFirst, DWORD dwCount, DWORD listBase, FL...
  function BOOL (line 3041) | BOOL wglDescribeLayerPlane(int iPixelFormat, int iLayerPlane, UINT nByte...
  function wglSetLayerPaletteEntries (line 3047) | int wglSetLayerPaletteEntries(int iLayerPlane, int iStart, int cEntries,...
  function wglGetLayerPaletteEntries (line 3053) | int wglGetLayerPaletteEntries(int iLayerPlane, int iStart, int cEntries,...
  function BOOL (line 3059) | BOOL wglRealizeLayerPalette(int iLayerPlane, BOOL bRealize)
  function BOOL (line 3065) | BOOL wglSwapLayerBuffers(UINT uPlanes)
  function COLORREF (line 3078) | COLORREF SetDCPenColor(COLORREF clr)
  function COLORREF (line 3090) | COLORREF SetDCBrushColor(COLORREF clr)
  function DWORD (line 3096) | DWORD GetFontUnicodeRanges(LPGLYPHSET lpgs) const
  function DWORD (line 3102) | DWORD GetGlyphIndices(LPCTSTR lpstr, int cch, LPWORD pgi, DWORD dwFlags)...
  function BOOL (line 3108) | BOOL GetTextExtentPointI(LPWORD pgiIn, int cgi, LPSIZE lpSize) const
  function BOOL (line 3114) | BOOL GetTextExtentExPointI(LPWORD pgiIn, int cgi, int nMaxExtent, LPINT ...
  function BOOL (line 3120) | BOOL GetCharWidthI(UINT giFirst, UINT cgi, LPWORD pgi, LPINT lpBuffer) c...
  function BOOL (line 3126) | BOOL GetCharABCWidthsI(UINT giFirst, UINT cgi, LPWORD pgi, LPABC lpabc) ...
  function BOOL (line 3132) | BOOL ColorCorrectPalette(HPALETTE hPalette, DWORD dwFirstEntry, DWORD dw...
  function class (line 3143) | class CPaintDC : public CDC
  function class (line 3167) | class CClientDC : public CDC
  function class (line 3188) | class CWindowDC : public CDC
  function class (line 3209) | class CMemoryDC : public CDC
  function class (line 3241) | class CEnhMetaFileInfo

FILE: third_party/WTL/Include/atlmisc.h
  function namespace (line 42) | namespace WTL
  function class (line 453) | class CRecentDocumentList : public CRecentDocumentListBase<CRecentDocume...
  function class (line 855) | class CRegProperty
  function ReadOne (line 1083) | bool ReadOne(LPCTSTR lpstrRegKey, LPCTSTR lpstrRegValue, TProp& prop, WO...
  function WriteOne (line 1098) | bool WriteOne(LPCTSTR lpstrRegKey, LPCTSTR lpstrRegValue, TProp& prop, W...
  function Write (line 1146) | void Write(LPCTSTR lpstrRegKey)
  function OnRead (line 1183) | void OnRead(LPCTSTR /*lpstrRegKey*/)
  function OnWrite (line 1186) | void OnWrite(LPCTSTR /*lpstrRegKey*/)
  function OnReadError (line 1189) | void OnReadError(LPCTSTR /*lpstrRegValue*/, LSTATUS /*lError*/)
  function OnWriteError (line 1194) | void OnWriteError(LPCTSTR /*lpstrRegValue*/, LSTATUS /*lError*/)
  function HPEN (line 1204) | inline HPEN AtlGetStockPen(int nPen)
  function HBRUSH (line 1210) | inline HBRUSH AtlGetStockBrush(int nBrush)
  function HFONT (line 1216) | inline HFONT AtlGetStockFont(int nFont)
  function HPALETTE (line 1222) | inline HPALETTE AtlGetStockPalette(int nPalette)
  function _IsDBCSTrailByte (line 1233) | inline bool _IsDBCSTrailByte(LPCTSTR lpstr, int nChar)
  function AtlCompactPath (line 1250) | inline bool AtlCompactPath(LPTSTR lpstrOut, LPCTSTR lpstrIn, int cchLen)

FILE: third_party/WTL/Include/atlprint.h
  function namespace (line 40) | namespace WTL
  function OpenPrinter (line 180) | bool OpenPrinter(LPCTSTR lpszPrinterName, PRINTER_DEFAULTS* pprintdefs)
  function ClosePrinter (line 205) | void ClosePrinter()
  function Attach (line 295) | void Attach(HANDLE hPrinter)
  function HANDLE (line 301) | HANDLE Detach()
  type CPrinterT (line 311) | typedef CPrinterT<false>   CPrinterHandle;
  type CPrinterT (line 312) | typedef CPrinterT<true>    CPrinter;
  function Attach (line 344) | void Attach(HANDLE hDevModeNew)
  function HANDLE (line 351) | HANDLE Detach()
  function CopyFromPrinter (line 362) | bool CopyFromPrinter(HANDLE hPrinter)
  function CopyFromDEVMODE (line 371) | bool CopyFromDEVMODE(const DEVMODE* pdm)
  function CopyFromHDEVMODE (line 387) | bool CopyFromHDEVMODE(HANDLE hdm)
  function HANDLE (line 399) | HANDLE CopyToHDEVMODE()
  function UpdateForNewPrinter (line 416) | bool UpdateForNewPrinter(HANDLE hPrinter)
  function operator (line 457) | operator DEVMODE*() const { return m_pDevMode; }
  function Cleanup (line 460) | void Cleanup()
  type CDevModeT (line 472) | typedef CDevModeT<false>   CDevModeHandle;
  type CDevModeT (line 473) | typedef CDevModeT<true>    CDevMode;
  function class (line 479) | class CPrinterDC : public CDC
  function class (line 511) | class ATL_NO_VTABLE IPrintJobInfo
  function virtual (line 537) | virtual void BeginPrintJob(HDC /*hDC*/)   // allocate handles needed, etc
  function virtual (line 541) | virtual void EndPrintJob(HDC /*hDC*/, bool /*bAborted*/)   // free handl...
  function virtual (line 545) | virtual void PrePrintPage(UINT /*nPage*/, HDC hDC)
  function virtual (line 552) | virtual void PostPrintPage(UINT /*nPage*/, HDC hDC)
  function virtual (line 557) | virtual DEVMODE* GetNewDevModeForPage(UINT /*nLastPage*/, UINT /*nPage*/)
  function virtual (line 562) | virtual bool IsValidPage(UINT /*nPage*/)
  function class (line 572) | class CPrintJob
  function DWORD (line 647) | static DWORD WINAPI StartProc(void* p)
  function StartHelper (line 655) | bool StartHelper()
  function CancelPrintJob (line 698) | void CancelPrintJob()
  function class (line 708) | class CPrintPreview
  function PrevPage (line 866) | bool PrevPage()
  function MESSAGE_HANDLER (line 878) | BEGIN_MSG_MAP(CPrintPreviewWindowImpl)
  function LRESULT (line 889) | LRESULT OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /...
  function DoPrePaint (line 910) | void DoPrePaint(CDCHandle dc, RECT& rc)
  function class (line 939) | class CPrintPreviewWindow : public CPrintPreviewWindowImpl<CPrintPreview...

FILE: third_party/WTL/Include/atlribbon.h
  function namespace (line 112) | namespace WTL
  function LPCTSTR (line 181) | LPCTSTR UIGetText(int nID)
  function namespace (line 234) | namespace RibbonUI
  function HRESULT (line 763) | HRESULT OnGetText(REFPROPERTYKEY key, PROPVARIANT* ppv)
  function virtual (line 777) | virtual HRESULT DoExecute(UINT nCmdID, UI_EXECUTIONVERB verb,
  function virtual (line 785) | virtual HRESULT DoUpdateProperty(UINT nCmdID, REFPROPERTYKEY key,
  function HRESULT (line 818) | HRESULT OnGetImage(REFPROPERTYKEY key, PROPVARIANT* ppv)
  function virtual (line 832) | virtual HRESULT DoUpdateProperty(UINT nCmdID, REFPROPERTYKEY key,
  function STDMETHODIMP (line 864) | STDMETHODIMP GetValue(REFPROPERTYKEY key, PROPVARIANT *value)
  function AddRef (line 870) | STDMETHODIMP_(ULONG) AddRef()
  function Release (line 875) | STDMETHODIMP_(ULONG) Release()
  function STDMETHODIMP (line 880) | STDMETHODIMP QueryInterface(REFIID iid, void** ppv)
  type CollectionImplBase (line 902) | typedef CollectionImplBase<TCollection, t_size> thisClass;
  function m_size (line 931) | m_size(t_items)
  function HRESULT (line 969) | HRESULT OnGetItem(UINT uIndex, REFPROPERTYKEY key, PROPVARIANT *value)
  function HRESULT (line 979) | HRESULT DoGetItem(UINT uItem, REFPROPERTYKEY key, PROPVARIANT *value)
  function HRESULT (line 997) | HRESULT DoGetCategory(UINT uCat, REFPROPERTYKEY key, PROPVARIANT *value)
  function HRESULT (line 1022) | HRESULT InvalidateItems()
  function HRESULT (line 1027) | HRESULT InvalidateCategories()
  function HRESULT (line 1032) | HRESULT DoUpdateProperty(UINT nCmdID, REFPROPERTYKEY key,
  function m_uSelected (line 1083) | m_uSelected(UI_COLLECTION_INVALIDINDEX)
  function UINT (line 1099) | UINT GetSelected()
  function HRESULT (line 1117) | HRESULT DoGetItem(UINT uItem, REFPROPERTYKEY key, PROPVARIANT *value)
  function HRESULT (line 1136) | HRESULT DoUpdateProperty(UINT nCmdID, REFPROPERTYKEY key,
  function HRESULT (line 1180) | HRESULT DoGetItem(UINT uItem, REFPROPERTYKEY key, PROPVARIANT *value)
  function HRESULT (line 1212) | HRESULT SetComboText(LPCWSTR sText)
  function LPCWSTR (line 1220) | LPCWSTR GetComboText()
  function HRESULT (line 1282) | HRESULT DoGetItem(UINT uItem, REFPROPERTYKEY key, PROPVARIANT *value)
  function HRESULT (line 1309) | HRESULT Select(UINT /*uItem*/, bool /*bUpdate*/ = false)
  type CollectionCtrlImpl (line 1370) | typedef CollectionCtrlImpl<T, t_ID, TCollection> thisClass;
  type TCollection (line 1373) | typedef TCollection Collection;
  function virtual (line 1376) | virtual HRESULT DoUpdateProperty(UINT nCmdID, REFPROPERTYKEY key,
  function virtual (line 1389) | virtual HRESULT DoExecute(UINT nCmdID, UI_EXECUTIONVERB verb,
  function HRESULT (line 1448) | HRESULT DoGetItem(UINT uItem, REFPROPERTYKEY key, PROPVARIANT *value)
  function virtual (line 1503) | virtual HRESULT DoUpdateProperty(UINT nCmdID, REFPROPERTYKEY key,
  function virtual (line 1536) | virtual HRESULT DoExecute(UINT nCmdID, UI_EXECUTIONVERB verb,
  function public (line 1565) | public TDocList
  function virtual (line 1659) | virtual HRESULT DoExecute(UINT nCmdID, UI_EXECUTIONVERB verb,
  function virtual (line 1697) | virtual HRESULT DoUpdateProperty(UINT nCmdID, REFPROPERTYKEY key,
  function virtual (line 1797) | virtual HRESULT DoExecute(UINT nCmdID, UI_EXECUTIONVERB verb,
  type T (line 2115) | typedef T WndRibbon;
  function virtual (line 2136) | virtual ~CRibbonImpl()
  function IsRibbonUI (line 2152) | bool IsRibbonUI()
  function IUIFramework (line 2157) | IUIFramework* GetIUIFrameworkPtr()
  function IUIRibbon (line 2172) | IUIRibbon* GetRibbonPtr()
  function IUIContextualUI (line 2177) | IUIContextualUI* GetMenuPtr(UINT32 uID)
  function UINT (line 2183) | UINT GetRibbonHeight()
  function HRESULT (line 2207) | HRESULT DestroyRibbon()
  function HRESULT (line 2220) | HRESULT operator >>(IStream* pIStream)
  function HRESULT (line 2237) | HRESULT operator <<(IStream* pIStream)
  function ResetRibbonSettings (line 2253) | void ResetRibbonSettings()
  function HRESULT (line 2262) | HRESULT SaveRibbonSettings()
  function HRESULT (line 2282) | HRESULT RestoreRibbonSettings()
  function UI_CONTROLDOCK (line 2301) | UI_CONTROLDOCK GetQATDock()
  function SetQATDock (line 2318) | bool SetQATDock(UI_CONTROLDOCK dockState)
  function GetRibbonDisplayState (line 2338) | bool GetRibbonDisplayState(REFPROPERTYKEY key)
  function IsRibbonMinimized (line 2379) | bool IsRibbonMinimized()
  function IsRibbonHidden (line 2389) | bool IsRibbonHidden()
  function UI_HSBCOLOR (line 2400) | UI_HSBCOLOR GetRibbonColor(REFPROPERTYKEY key)
  function SetRibbonColor (line 2420) | bool SetRibbonColor(REFPROPERTYKEY key, UI_HSBCOLOR color)
  function HRESULT (line 2442) | HRESULT SetRibbonModes(INT32 iModes)
  function UI_CONTEXTAVAILABILITY (line 2449) | UI_CONTEXTAVAILABILITY GetRibbonContextAvail(UINT32 uID)
  function HRESULT (line 2469) | HRESULT SetRibbonContextAvail(UINT32 uID, UI_CONTEXTAVAILABILITY cav)
  function HasRibbonMenu (line 2478) | bool HasRibbonMenu(UINT32 uID)
  function HRESULT (line 2484) | HRESULT TrackRibbonMenu(UINT32 uID, INT32 x, INT32 y)
  function HRESULT (line 2493) | HRESULT TrackRibbonMenu(UINT32 uID, LPARAM lParam)
  function HBITMAP (line 2499) | HBITMAP OnRibbonQueryImage(UINT nCmdID, REFPROPERTYKEY /*key*/)
  function LPCWSTR (line 2504) | LPCWSTR OnRibbonQueryText(UINT nCmdID, REFPROPERTYKEY key)
  function OnRibbonQueryState (line 2509) | bool OnRibbonQueryState(UINT nCmdID, REFPROPERTYKEY key)
  function UI_CONTEXTAVAILABILITY (line 2514) | UI_CONTEXTAVAILABILITY OnRibbonQueryTabAvail(UINT nCmdID)
  function LPCWSTR (line 2524) | LPCWSTR OnRibbonQueryComboText(UINT32 /*uCtrlID*/)
  function LPCWSTR (line 2529) | LPCWSTR OnRibbonQueryCategoryText(UINT32 /*uCtrlID*/, UINT32 /*uCat*/)
  function UINT32 (line 2534) | UINT32 OnRibbonQueryItemCategory(UINT32 /*uCtrlID*/, UINT32 /*uItem*/)
  function LPCWSTR (line 2539) | LPCWSTR OnRibbonQueryItemText(UINT32 uCtrlID, UINT32 uItem)
  function HBITMAP (line 2549) | HBITMAP OnRibbonQueryItemImage(UINT32 uCtrlID, UINT32 uItem)
  function UINT32 (line 2554) | UINT32 OnRibbonQueryItemCommand(UINT32 uCtrlID, UINT32 uItem)
  function UI_COMMANDTYPE (line 2559) | UI_COMMANDTYPE OnRibbonQueryItemCommandType(UINT32 /*uCtrlID*/, UINT32 /...
  function LPCWSTR (line 2564) | LPCWSTR OnRibbonQueryRecentItemName(LPCWSTR sPath)
  function OnRibbonQuerySpinnerValue (line 2574) | bool OnRibbonQuerySpinnerValue(UINT /*nCmdID*/, REFPROPERTYKEY /*key*/, ...
  function OnRibbonQueryFloatSpinnerValue (line 2579) | bool OnRibbonQueryFloatSpinnerValue(UINT /*nCmdID*/, REFPROPERTYKEY /*ke...
  function COLORREF (line 2584) | COLORREF OnRibbonQueryColor(UINT /*nCmdID*/)
  function LPCWSTR (line 2589) | LPCWSTR OnRibbonQueryColorLabel(UINT /*nCmdID*/, REFPROPERTYKEY /*key*/)
  function COLORREF (line 2594) | COLORREF* OnRibbonQueryColorArray(UINT /*nCmdID*/, REFPROPERTYKEY /*key*/)
  function LPCWSTR (line 2599) | LPCWSTR* OnRibbonQueryColorTooltips(UINT /*nCmdID*/, REFPROPERTYKEY /*ke...
  function OnRibbonItemSelected (line 2604) | bool OnRibbonItemSelected(UINT32 uCtrlID, UI_EXECUTIONVERB verb, UINT32 ...
  function OnRibbonColorCtrlExecute (line 2610) | void OnRibbonColorCtrlExecute(UINT32 uCtrlID, UI_EXECUTIONVERB verb, UI_...
  function OnRibbonFontCtrlExecute (line 2615) | void OnRibbonFontCtrlExecute(UINT32 uCtrlID, UI_EXECUTIONVERB verb, CHAR...
  function OnRibbonSpinnerCtrlExecute (line 2620) | void OnRibbonSpinnerCtrlExecute(UINT32 uCtrlID, LONG* pVal)
  function OnRibbonSpinnerCtrlExecute (line 2625) | void OnRibbonSpinnerCtrlExecute(UINT32 uCtrlID, DOUBLE* pVal)
  function OnRibbonCommandExecute (line 2630) | void OnRibbonCommandExecute(UINT32 uCmdID)
  function HBITMAP (line 2636) | HBITMAP DefRibbonQueryImage(UINT nCmdID)
  function DefRibbonQueryState (line 2641) | bool DefRibbonQueryState(UINT nCmdID, REFPROPERTYKEY key)
  function LPCTSTR (line 2661) | LPCTSTR DefRibbonQueryText(UINT nCmdID, REFPROPERTYKEY key)
  function LPCWSTR (line 2691) | LPCWSTR DefRibbonQueryItemText(UINT32 uCtrlID, UINT32 uItem)
  function HBITMAP (line 2696) | HBITMAP DefRibbonQueryItemImage(UINT32 uCtrlID, UINT32 uItem)
  function UINT32 (line 2701) | UINT32 DefRibbonQueryItemCommand(UINT32 uCtrlID, UINT32 uItem)
  function DefRibbonColorCtrlExecute (line 2706) | void DefRibbonColorCtrlExecute(UINT32 uCtrlID, UI_EXECUTIONVERB verb, UI...
  function HRESULT (line 2732) | HRESULT InvalidateCtrl(UINT32 nID)
  function HRESULT (line 2739) | HRESULT InvalidateProperty(UINT32 nID, REFPROPERTYKEY key, UI_INVALIDATI...
  function STDMETHODIMP (line 2774) | STDMETHODIMP OnViewChanged(UINT32, UI_VIEWTYPE, IUnknown*, UI_VIEWVERB v...
  function STDMETHODIMP (line 2797) | STDMETHODIMP OnCreateUICommand(UINT32 nCmdID, UI_COMMANDTYPE typeID, IUI...
  function STDMETHODIMP (line 2806) | STDMETHODIMP OnDestroyUICommand(UINT32 nCmdID, UI_COMMANDTYPE, IUIComman...
  function STDMETHODIMP (line 2813) | STDMETHODIMP Execute(UINT nCmdID,
  function STDMETHODIMP (line 2823) | STDMETHODIMP UpdateProperty(UINT nCmdID, REFPROPERTYKEY key,
  function AddRef (line 2832) | STDMETHODIMP_(ULONG) AddRef()
  function Release (line 2837) | STDMETHODIMP_(ULONG) Release()
  function STDMETHODIMP (line 2848) | STDMETHODIMP QueryInterface(REFIID iid, void** ppv)
  function STDMETHODIMP (line 2871) | STDMETHODIMP QueryInterface(REFIID iid, void** ppv)
  function ULONG (line 2882) | ULONG STDMETHODCALLTYPE AddRef()
  function ULONG (line 2886) | ULONG STDMETHODCALLTYPE Release()
  function virtual (line 2893) | virtual HRESULT DoExecute(UINT nCmdID, UI_EXECUTIONVERB verb,
  function virtual (line 2917) | virtual HRESULT DoUpdateProperty(UINT nCmdID, REFPROPERTYKEY key,
  type _ribbonCtrl (line 3060) | typedef struct
  function ResetFrame (line 3176) | void ResetFrame()
  function INT (line 3182) | INT CalcWin7Fix()
  function NeedWin7Fix (line 3190) | bool NeedWin7Fix()
  function UseCommandBarBitmaps (line 3197) | bool UseCommandBarBitmaps(bool bUse)
  function HBITMAP (line 3260) | HBITMAP OnRibbonQueryImage(UINT nCmdID, REFPROPERTYKEY key)
  function LRESULT (line 3310) | LRESULT OnActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL...
  function LRESULT (line 3319) | LRESULT OnNCCalcSize(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& ...
  function HBITMAP (line 3360) | HBITMAP GetCommandBarBitmap(UINT nCmdID)
  function class (line 3393) | class CRibbonPersist
  function LONG (line 3435) | LONG Restore(bool& bRibbonUI, HGLOBAL& hgSettings)
  function LONG (line 3481) | LONG Delete()

FILE: third_party/WTL/Include/atlscrl.h
  function namespace (line 36) | namespace WTL
  function GetScrollOffset (line 164) | void GetScrollOffset(POINT& ptOffset) const
  function GetScrollSize (line 242) | void GetScrollSize(SIZE& sizeWnd) const
  function SetScrollLine (line 248) | void SetScrollLine(int cxLine, int cyLine)
  function SetScrollLine (line 257) | void SetScrollLine(SIZE sizeLine)
  function GetScrollLine (line 262) | void GetScrollLine(SIZE& sizeLine) const
  function SetScrollPage (line 268) | void SetScrollPage(int cxPage, int cyPage)
  function SetScrollPage (line 277) | void SetScrollPage(SIZE sizePage)
  function GetScrollPage (line 282) | void GetScrollPage(SIZE& sizePage) const
  function ScrollLineDown (line 288) | void ScrollLineDown()
  function ScrollLineUp (line 295) | void ScrollLineUp()
  function ScrollPageDown (line 302) | void ScrollPageDown()
  function ScrollPageUp (line 309) | void ScrollPageUp()
  function ScrollTop (line 316) | void ScrollTop()
  function ScrollBottom (line 323) | void ScrollBottom()
  function ScrollLineRight (line 330) | void ScrollLineRight()
  function ScrollLineLeft (line 337) | void ScrollLineLeft()
  function ScrollPageRight (line 344) | void ScrollPageRight()
  function ScrollPageLeft (line 351) | void ScrollPageLeft()
  function ScrollAllLeft (line 358) | void ScrollAllLeft()
  function ScrollAllRight (line 365) | void ScrollAllRight()
  function ScrollToView (line 373) | void ScrollToView(POINT pt)
  function ScrollToView (line 381) | void ScrollToView(RECT& rect)
  function ScrollToView (line 404) | void ScrollToView(HWND hWnd)
  function MESSAGE_HANDLER (line 416) | BEGIN_MSG_MAP(CScrollImpl)
  function LRESULT (line 451) | LRESULT OnVScroll(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL&...
  function LRESULT (line 459) | LRESULT OnHScroll(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL&...
  function LRESULT (line 467) | LRESULT OnMouseWheel(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BO...
  function LRESULT (line 497) | LRESULT OnMouseHWheel(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, B...
  function LRESULT (line 525) | LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bH...
  function LRESULT (line 536) | LRESULT OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /...
  function DoPaint (line 631) | void DoPaint(CDCHandle /*dc*/)
  function DoSize (line 638) | void DoSize(int cx, int cy)
  function DoScroll (line 681) | void DoScroll(int nType, int nScrollCode, int& cxyOffset, int cxySizeAll...
  function CalcLineOrPage (line 783) | static int CalcLineOrPage(int nVal, int nMax, int nDiv)
  function AdjustScrollOffset (line 799) | bool AdjustScrollOffset(int& x, int& y)
  function GetSystemSettings (line 819) | void GetSystemSettings()
  function MESSAGE_HANDLER (line 874) | BEGIN_MSG_MAP(CScrollWindowImpl)
  function GetScrollOffset (line 955) | void GetScrollOffset(POINT& ptOffset) const
  function GetScrollSize (line 1004) | void GetScrollSize(RECT& rcScroll) const
  function SetScrollLine (line 1011) | void SetScrollLine(int cxLine, int cyLine)
  function SetScrollLine (line 1028) | void SetScrollLine(SIZE sizeLine)
  function GetScrollLine (line 1033) | void GetScrollLine(SIZE& sizeLine) const
  function SetScrollPage (line 1040) | void SetScrollPage(int cxPage, int cyPage)
  function SetScrollPage (line 1057) | void SetScrollPage(SIZE sizePage)
  function GetScrollPage (line 1062) | void GetScrollPage(SIZE& sizePage) const
  function MESSAGE_HANDLER (line 1068) | BEGIN_MSG_MAP(CMapScrollImpl)
  function BOOL (line 1207) | BOOL GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo)
  type CFSBWindowT (line 1220) | typedef CFSBWindowT<ATL::CWindow>   CFSBWindow;
  type _ChildPlacement (line 1245) | struct _ChildPlacement
  function GetScrollSize (line 1311) | void GetScrollSize(SIZE& sizeLog) const
  function SetScrollLine (line 1317) | void SetScrollLine(int cxLogLine, int cyLogLine)
  function SetScrollLine (line 1330) | void SetScrollLine(SIZE sizeLogLine)
  function GetScrollLine (line 1335) | void GetScrollLine(SIZE& sizeLogLine) const
  function SetScrollPage (line 1341) | void SetScrollPage(int cxLogPage, int cyLogPage)
  function SetScrollPage (line 1355) | void SetScrollPage(SIZE sizeLogPage)
  function GetScrollPage (line 1360) | void GetScrollPage(SIZE& sizeLogPage) const
  function SetZoomScale (line 1365) | void SetZoomScale(float fZoomScale)
  function SetZoomScaleMin (line 1383) | void SetZoomScaleMin(float fZoomScaleMin)
  function SetZoomScaleMax (line 1396) | void SetZoomScaleMax(float fZoomScaleMax)
  function SetZoomDelta (line 1409) | void SetZoomDelta(float fZoomDelta)
  function SetZoomMode (line 1422) | void SetZoomMode(int nZoomMode)
  function Zoom (line 1464) | void Zoom(int x, int y, float fZoomScale)
  function Zoom (line 1484) | void Zoom(POINT pt, float fZoomScale)
  function Zoom (line 1490) | void Zoom(RECT& rc)
  function PrepareDC (line 1582) | void PrepareDC(CDCHandle dc)
  function ClientToDevice (line 1613) | void ClientToDevice(POINT &pt)
  function DeviceToClient (line 1619) | void DeviceToClient(POINT &pt)
  function CenterOnPoint (line 1625) | void CenterOnPoint(POINT pt)
  function CenterOnLogicalPoint (line 1658) | void CenterOnLogicalPoint(POINT ptLog)
  function BOOL (line 1666) | BOOL PtInDevRect(POINT pt)
  function NormalizeRect (line 1673) | void NormalizeRect(RECT& rc)
  function DrawTrackRect (line 1690) | void DrawTrackRect()
  function NotifyParentZoomChanged (line 1703) | void NotifyParentZoomChanged()
  function DoWheelZoom (line 1711) | void DoWheelZoom(int zDelta)
  function MESSAGE_HANDLER (line 1719) | BEGIN_MSG_MAP(CZoomScrollImpl)
  function LRESULT (line 1770) | LRESULT OnMouseWheel(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHan...
  function LRESULT (line 1786) | LRESULT OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /...
  function LRESULT (line 1822) | LRESULT OnLButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, B...
  function LRESULT (line 1852) | LRESULT OnMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOO...
  function LRESULT (line 1871) | LRESULT OnLButtonUp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOO...
  function MESSAGE_HANDLER (line 2019) | BEGIN_MSG_MAP(CScrollContainerImpl)
  function DoSize (line 2042) | void DoSize(int cx, int cy)
  function DoPaint (line 2050) | void DoPaint(CDCHandle dc)
  function ScrollToView (line 2065) | void ScrollToView(POINT pt)
  function ScrollToView (line 2070) | void ScrollToView(RECT& rect)
  function ScrollToView (line 2075) | void ScrollToView(HWND hWnd)   // client window coordinates
  function UpdateLayout (line 2089) | void UpdateLayout()
  function GetContainerRect (line 2107) | void GetContainerRect(RECT& rect)
  function class (line 2119) | class CScrollContainer : public CScrollContainerImpl<CScrollContainer>

FILE: third_party/WTL/Include/atlsplit.h
  function namespace (line 31) | namespace WTL
  function GetSplitterRect (line 120) | void GetSplitterRect(LPRECT lpRect) const
  function SetSinglePaneMode (line 208) | bool SetSinglePaneMode(int nPane = SPLIT_PANE_NONE)
  function SetSplitterDefaultPosPct (line 267) | void SetSplitterDefaultPosPct(int nPct)
  function HWND (line 299) | HWND GetSplitterPane(int nPane) const
  function SetActivePane (line 308) | bool SetActivePane(int nPane)
  function GetActivePane (line 322) | int GetActivePane() const
  function SetDefaultActivePane (line 363) | bool SetDefaultActivePane(int nPane)
  function SetDefaultActivePane (line 374) | bool SetDefaultActivePane(HWND hWnd)
  function DrawSplitter (line 393) | void DrawSplitter(CDCHandle dc)
  function MoveSplitterBar (line 418) | void MoveSplitterBar()
  function DrawSplitterBar (line 473) | void DrawSplitterBar(CDCHandle dc)
  function DrawSplitterPane (line 515) | void DrawSplitterPane(CDCHandle dc, int nPane)
  function MESSAGE_HANDLER (line 528) | BEGIN_MSG_MAP(CSplitterImpl)
  function LRESULT (line 547) | LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BO...
  function LRESULT (line 578) | LRESULT OnSetCursor(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& b...
  function LRESULT (line 594) | LRESULT OnMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOO...
  function LRESULT (line 635) | LRESULT OnLButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, B...
  function LRESULT (line 662) | LRESULT OnLButtonUp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,...
  function LRESULT (line 703) | LRESULT OnKeyDown(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL&...
  function LRESULT (line 760) | LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM, BOOL& bHand...
  function LRESULT (line 780) | LRESULT OnMouseActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /...
  function LRESULT (line 803) | LRESULT OnSettingChange(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lPara...
  function UpdateSplitterLayout (line 820) | void UpdateSplitterLayout()
  function GetSplitterBarRect (line 855) | bool GetSplitterBarRect(LPRECT lpRect) const
  function GetSplitterPaneRect (line 879) | bool GetSplitterPaneRect(int nPane, LPRECT lpRect) const
  function IsOverSplitterRect (line 933) | bool IsOverSplitterRect(int x, int y) const
  function IsOverSplitterBar (line 940) | bool IsOverSplitterBar(int x, int y) const
  function DrawGhostBar (line 952) | void DrawGhostBar()
  function GetSystemSettings (line 976) | void GetSystemSettings(bool bUpdate)
  function StoreProportionalPos (line 1006) | void StoreProportionalPos()
  function UpdateProportionalPos (line 1016) | void UpdateProportionalPos()
  function StoreRightAlignPos (line 1033) | void StoreRightAlignPos()
  function UpdateRightAlignPos (line 1043) | void UpdateRightAlignPos()
  function BOOL (line 1073) | BOOL SubclassWindow(HWND hWnd)
  function MESSAGE_HANDLER (line 1087) | BEGIN_MSG_MAP(CSplitterWindowImpl)
  function LRESULT (line 1100) | LRESULT OnSize(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bH...
  type CSplitterWindowT (line 1124) | typedef CSplitterWindowT<true>    CSplitterWindow;
  type CSplitterWindowT (line 1125) | typedef CSplitterWindowT<false>   CHorSplitterWindow;

FILE: third_party/WTL/Include/atltheme.h
  function namespace (line 61) | namespace WTL
  function Attach (line 97) | void Attach(HTHEME hTheme)
  function HTHEME (line 102) | HTHEME Detach()
  function IsThemingSupported (line 110) | static bool IsThemingSupported()
  function HTHEME (line 138) | HTHEME OpenThemeData(HWND hWnd, LPCWSTR pszClassList)
  function HRESULT (line 148) | HRESULT CloseThemeData()
  function HRESULT (line 175) | HRESULT DrawThemeText(HDC hDC, int nPartID, int nStateID, LPCWSTR pszTex...
  function HRESULT (line 181) | HRESULT GetThemeBackgroundContentRect(HDC hDC, int nPartID, int nStateID...
  function HRESULT (line 187) | HRESULT GetThemeBackgroundExtent(HDC hDC, int nPartID, int nStateID, LPC...
  function HRESULT (line 193) | HRESULT GetThemePartSize(HDC hDC, int nPartID, int nStateID, LPCRECT pRe...
  function HRESULT (line 199) | HRESULT GetThemeTextExtent(HDC hDC, int nPartID, int nStateID, LPCWSTR p...
  function HRESULT (line 205) | HRESULT GetThemeTextMetrics(HDC hDC, int nPartID, int nStateID, PTEXTMET...
  function HRESULT (line 211) | HRESULT GetThemeBackgroundRegion(HDC hDC, int nPartID, int nStateID, LPC...
  function HRESULT (line 217) | HRESULT HitTestThemeBackground(HDC hDC, int nPartID, int nStateID, DWORD...
  function HRESULT (line 229) | HRESULT DrawThemeIcon(HDC hDC, int nPartID, int nStateID, LPCRECT pRect,...
  function BOOL (line 235) | BOOL IsThemePartDefined(int nPartID, int nStateID) const
  function BOOL (line 241) | BOOL IsThemeBackgroundPartiallyTransparent(int nPartID, int nStateID) const
  function HRESULT (line 247) | HRESULT GetThemeColor(int nPartID, int nStateID, int nPropID, COLORREF* ...
  function HRESULT (line 253) | HRESULT GetThemeMetric(HDC hDC, int nPartID, int nStateID, int nPropID, ...
  function HRESULT (line 259) | HRESULT GetThemeString(int nPartID, int nStateID, int nPropID, LPWSTR ps...
  function HRESULT (line 265) | HRESULT GetThemeBool(int nPartID, int nStateID, int nPropID, BOOL* pfVal...
  function HRESULT (line 271) | HRESULT GetThemeInt(int nPartID, int nStateID, int nPropID, int* pnVal) ...
  function HRESULT (line 277) | HRESULT GetThemeEnumValue(int nPartID, int nStateID, int nPropID, int* p...
  function HRESULT (line 283) | HRESULT GetThemePosition(int nPartID, int nStateID, int nPropID, LPPOINT...
  function HRESULT (line 290) | HRESULT GetThemeFont(int nPartID, HDC hDC, int nStateID, int nPropID, LO...
  function HRESULT (line 296) | HRESULT GetThemeFont(HDC hDC, int nPartID, int nStateID, int nPropID, LO...
  function HRESULT (line 302) | HRESULT GetThemeRect(int nPartID, int nStateID, int nPropID, LPRECT pRec...
  function HRESULT (line 308) | HRESULT GetThemeMargins(HDC hDC, int nPartID, int nStateID, int nPropID,...
  function HRESULT (line 314) | HRESULT GetThemeIntList(int nPartID, int nStateID, int nPropID, INTLIST*...
  function HRESULT (line 320) | HRESULT GetThemePropertyOrigin(int nPartID, int nStateID, int nPropID, e...
  function HRESULT (line 326) | HRESULT GetThemeFilename(int nPartID, int nStateID, int nPropID, LPWSTR ...
  function COLORREF (line 332) | COLORREF GetThemeSysColor(int nColorID) const
  function HBRUSH (line 338) | HBRUSH GetThemeSysColorBrush(int nColorID) const
  function GetThemeSysSize (line 344) | int GetThemeSysSize(int nSizeID) const
  function BOOL (line 350) | BOOL GetThemeSysBool(int nBoolID) const
  function HRESULT (line 356) | HRESULT GetThemeSysFont(int nFontID, LOGFONTW* plf) const
  function HRESULT (line 362) | HRESULT GetThemeSysString(int nStringID, LPWSTR pszStringBuff, int cchMa...
  function HRESULT (line 368) | HRESULT GetThemeSysInt(int nIntID, int* pnValue) const
  function HTHEME (line 374) | HTHEME OpenThemeDataEx(HWND hWnd, LPCWSTR pszClassList, DWORD dwFlags)
  function HRESULT (line 385) | HRESULT DrawThemeTextEx(HDC hDC, int nPartID, int nStateID, LPCWSTR pszT...
  function HRESULT (line 391) | HRESULT GetThemeTransitionDuration(int nPartID, int nFromStateID, int nT...
  function HRESULT (line 399) | HRESULT GetThemeBitmap(int nPartID, int nStateID, int nPropID, ULONG uFl...
  function HRESULT (line 405) | HRESULT GetThemeStream(int nPartID, int nStateID, int nPropID, VOID** pp...
  function HRESULT (line 413) | HRESULT GetThemeAnimationProperty(int iStoryboardId, int iTargetId, TA_P...
  function HRESULT (line 419) | HRESULT GetThemeAnimationTransform(int iStoryboardId, int iTargetId, DWO...
  function HRESULT (line 425) | HRESULT GetThemeTimingFunction(int iTimingFunctionId, TA_TIMINGFUNCTION*...
  function SetThemeClassList (line 531) | bool SetThemeClassList(LPCWSTR lpstrThemeClassList)
  function GetThemeClassList (line 552) | bool GetThemeClassList(LPWSTR lpstrThemeClassList, int cchListBuffer) const
  function HTHEME (line 585) | HTHEME OpenThemeData()
  function HTHEME (line 597) | HTHEME OpenThemeData(LPCWSTR pszClassList)
  function HRESULT (line 605) | HRESULT SetWindowTheme(LPCWSTR pszSubAppName, LPCWSTR pszSubIDList)
  function HRESULT (line 625) | HRESULT EnableThemeDialogTexture(DWORD dwFlags)
  function HRESULT (line 656) | HRESULT SetWindowThemeAttribute(WINDOWTHEMEATTRIBUTETYPE type, PVOID pvA...
  function HRESULT (line 666) | HRESULT SetWindowThemeNonClientAttributes(DWORD dwAttributes, DWORD dwMask)
  function MESSAGE_HANDLER (line 691) | BEGIN_MSG_MAP(CThemeImpl)
  function LRESULT (line 725) | LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  function DrawThemeClientEdge (line 750) | bool DrawThemeClientEdge(HRGN hRgnUpdate)
  function class (line 765) | class CBufferedPaintBase
  function class (line 811) | class CBufferedPaint
  function HRESULT (line 847) | HRESULT GetTargetRect(LPRECT pRect) const
  function HRESULT (line 865) | HRESULT GetBits(RGBQUAD** ppbBuffer, int* pcxRow) const
  function ATL_NO_VTABLE (line 895) | ATL_NO_VTABLE CBufferedPaintImpl : public CBufferedPaintBase
  function class (line 981) | class CBufferedAnimation
  function IsRendering (line 1017) | static bool IsRendering(HWND hWnd, HDC hDC)
  function HRESULT (line 1022) | static HRESULT StopAllAnimations(HWND hWnd)
  function ATL_NO_VTABLE (line 1037) | ATL_NO_VTABLE CBufferedAnimationImpl : public CBufferedPaintBase
  function MESSAGE_HANDLER (line 1084) | BEGIN_MSG_MAP(CBufferedAnimationImpl)
  function LRESULT (line 1095) | LRESULT OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /...
  function SetState (line 1114) | void SetState(TState State)
  function SetNewState (line 1119) | void SetNewState(TState State)
  function DoAnimationPaint (line 1129) | void DoAnimationPaint(CDCHandle dc, RECT& rect)

FILE: third_party/WTL/Include/atluser.h
  function namespace (line 49) | namespace WTL
  function _FixTrackMenuPopupX (line 238) | static int _FixTrackMenuPopupX(int x, int y)
  function BOOL (line 261) | BOOL GetMenuInfo(LPMENUINFO lpMenuInfo) const
  function BOOL (line 267) | BOOL SetMenuInfo(LPCMENUINFO lpMenuInfo)
  function BOOL (line 280) | BOOL AppendMenu(UINT nFlags, HMENU hSubMenu, LPCTSTR lpszNewItem)
  function BOOL (line 287) | BOOL A
Condensed preview — 533 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,004K chars).
[
  {
    "path": ".clang-format",
    "chars": 619,
    "preview": "---\nBasedOnStyle: LLVM\n\nIndentWidth: 4\n\n# 访问说明符(public、private等)的偏移\nAccessModifierOffset: -4\n\n# 允许短的块放在同一行(Always 总是将短块合"
  },
  {
    "path": ".github/workflows/cmake-single-platform.yml",
    "chars": 3171,
    "preview": "# This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if yo"
  },
  {
    "path": ".gitignore",
    "chars": 54,
    "preview": ".idea/\n.vscode/\noutput/\nbuild/\nvcpkg_installed/\n*.aps\n"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 779,
    "preview": "cmake_minimum_required(VERSION 3.11)\n\n# C++17\nset(CMAKE_CXX_STANDARD 17)\n\nproject(SmartCharsetConverter)\n\n# 添加unicode宏\na"
  },
  {
    "path": "CMakePresets.json",
    "chars": 568,
    "preview": "{\n\t\"version\": 8,\n\t\"configurePresets\": [\n\t\t{\n\t\t\t\"name\": \"default\",\n\t\t\t\"binaryDir\": \"${sourceDir}/build\",\n\t\t\t\"cacheVariabl"
  },
  {
    "path": "README-en.md",
    "chars": 8121,
    "preview": "# SmartCharsetConverter\n\n![workflow](https://github.com/tomwillow/SmartCharsetConverter/actions/workflows/cmake-single-p"
  },
  {
    "path": "README.md",
    "chars": 3868,
    "preview": "# 智能编码集转换器\n\n![workflow](https://github.com/tomwillow/SmartCharsetConverter/actions/workflows/cmake-single-platform.yml/b"
  },
  {
    "path": "config_on_win.bat",
    "chars": 28,
    "preview": "cmake --preset=default\npause"
  },
  {
    "path": "sample/expect_pass/[EUC-JP]readme.txt",
    "chars": 237,
    "preview": "School DaysΥե˴ޤޤƤư衦ʤwmv˥ݡȤץ\n\nưĶ\nMicrosoft .NET Framework Version 1.1ɬפǤ\n󥽡륢ץꥱǤ(ʹӤǤĤäΤǡ)\n\n\nSchool DaysΥե˴ޤޤƤư衦ʤꤵ줿ե\nǥ쥯ȥwmvե"
  },
  {
    "path": "sample/expect_pass/[gb18030]你还戴着这副眼镜.txt",
    "chars": 926,
    "preview": "\n---------------------------------------------\n鼮֮TXT\nַhttp://www.skyyi.cn/index.php\n[Ϊ]\n--------------------------------"
  },
  {
    "path": "sample/expect_pass/[utf-8].txt",
    "chars": 80,
    "preview": "Språk: Norsk\nΓλώσσα: Ελληνικά\nЯзык: Русский\n언어 : 한국어\n言語: 日本語\nLangage : Français\n"
  },
  {
    "path": "sample/not_pass_yet/[GB18030]DialogAnimation.h",
    "chars": 661,
    "preview": "#pragma once\n#include <vector>\n#include <Windows.h>\n#include \"..\\Common\\String.h\"\n\nclass TElement;\nnamespace DialogAnima"
  },
  {
    "path": "sample/not_pass_yet/[GB18030]LogRecord.h",
    "chars": 1495,
    "preview": "#pragma once\n\n#include <TimeStamp.h>\n#include <tstring.h>\n\n#include <mutex>\n#include <sstream>\n\nclass LogRecord {\npublic"
  },
  {
    "path": "sample/not_pass_yet/[GB18030]TBarTool_GB.cpp",
    "chars": 1061,
    "preview": "#pragma once\n#include \"TBarTool.h\"\n\n#include \"..\\Control\\TTreeViewContent.h\"\n#include \"..\\Element\\TShape.h\"\n#include \".."
  },
  {
    "path": "sample/not_pass_yet/[GB18030]TDraw.h",
    "chars": 11369,
    "preview": "#pragma once\n#include <vector>\n#include <Windows.h>\n\n#pragma  comment(lib, \"gdiplus.lib\")\n#include <comdef.h>\n#include <"
  },
  {
    "path": "sample/not_pass_yet/[GB18030]TMenu.cpp",
    "chars": 297,
    "preview": "#include \"TMenu.h\"\n\nvoid PopupMenu(HWND hParent, int menu_id) {\n    //Ҽ˵\n    HMENU hMenu = LoadMenu(GetModuleHandle(NULL"
  },
  {
    "path": "sample/not_pass_yet/[GB18030]一个字.txt",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "sample/not_pass_yet/[GB18030]澤野弘之.lrc",
    "chars": 2974,
    "preview": "[ti:THE ANSWER]\n[ar:Ұ֮ ( Ҥ椭)]\n[al:86DƥåD ꥸʥ&#12539;ɥȥå]\n[by:]\n[offset:0]\n[00:00.00]THE ANSWER - Ұ֮ ( Ҥ椭)/Laco\n[00:25.18]"
  },
  {
    "path": "sample/not_pass_yet/[GB18030]编译说明.txt",
    "chars": 47,
    "preview": "sdjfksdjfskjdfsd\nsdfjsdkfjsdkjf\ndskfsjdfklsjfd\n"
  },
  {
    "path": "sample/not_pass_yet/[GB18030]连杆.cpp",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "sample/not_pass_yet/[UTF-8]CMakeLists.txt",
    "chars": 696,
    "preview": "cmake_minimum_required(VERSION 3.11)\n\n# C++17\nset(CMAKE_CXX_STANDARD 17)\n\nproject(SmartCharsetConverter)\n\n# 添加unicode宏\na"
  },
  {
    "path": "sample/not_pass_yet/[UTF-8]TBarTool.cpp",
    "chars": 1063,
    "preview": "#pragma once\n#include \"TBarTool.h\"\n\n#include \"..\\Control\\TTreeViewContent.h\"\n#include \"..\\Element\\TShape.h\"\n#include \".."
  },
  {
    "path": "sample/not_pass_yet/[UTF-8]虚拟机环境.txt",
    "chars": 76,
    "preview": "换源\n\ngcc: build-essential\ncmake 3.16+\n\nvscode: c++ go cmake ssh-remote shell\n"
  },
  {
    "path": "sample/tcvn/demo1-tcvn.txt",
    "chars": 1139,
    "preview": "msg_id\tpre_msg_id\tnext_msg_id\tmsg_info\n1\t0\t0\tNhm Gio Ch:  <enter/>    Cho cc h! Ti h Giang Bit Hc, ngng m i danh ca cc h"
  },
  {
    "path": "sample/tcvn/demo1-utf8.txt",
    "chars": 1418,
    "preview": "msg_id\tpre_msg_id\tnext_msg_id\tmsg_info\n1\t0\t0\tNhậm Giáo Chủ:  <enter/>    Chào các hạ! Tại hạ Giang Biệt Hạc, ngượng mộ đ"
  },
  {
    "path": "sample/uchardet_test_samples/ar/iso-8859-6.txt",
    "chars": 48,
    "preview": "-1256            \n       .    \n.        8859-6.\n"
  },
  {
    "path": "sample/uchardet_test_samples/ar/utf-8.txt",
    "chars": 214,
    "preview": "ويندوز-1256 هي صفحة كود تستخدم في كتابة اللغة العربية عموماً وبعض اللغات الشبيهة\nالتي تستخدم نفس الأبجدية مثل الأردو وال"
  },
  {
    "path": "sample/uchardet_test_samples/ar/windows-1256.txt",
    "chars": 48,
    "preview": "-1256            \n       .    \n.        8859-6.\n"
  },
  {
    "path": "sample/uchardet_test_samples/be/iso-8859-5.txt",
    "chars": 97,
    "preview": " (Marmota), ,   .\n\n   15  ,    .  -- .           ,      .           ,    ,        .   ,   ,   . \n"
  },
  {
    "path": "sample/uchardet_test_samples/be/utf-8.txt",
    "chars": 476,
    "preview": "Суркі (Marmota), сысуны, прадстаўнікі атраду грызуноў.\n\nНа Зямлі існуе 15 відаў суркоў, якія маюць агульнага продка. Пра"
  },
  {
    "path": "sample/uchardet_test_samples/be/windows-1251.txt",
    "chars": 98,
    "preview": " (Marmota), ,   .\n\n   15  ,    .   .         Ţ糳  ,      .           ,    ,        .   ,   ,   . \n"
  },
  {
    "path": "sample/uchardet_test_samples/bg/iso-8859-5.txt",
    "chars": 84,
    "preview": " (Marmota)   -      (Sciuridae),  14 ,     (Spermophilus citellus).\n\n    ,        .\n"
  },
  {
    "path": "sample/uchardet_test_samples/bg/utf-8.txt",
    "chars": 247,
    "preview": "Мармотите (Marmota) са бозайници - род гризачи от семейство катерицови (Sciuridae), включващ 14 вида, включващи групата "
  },
  {
    "path": "sample/uchardet_test_samples/bg/windows-1251.txt",
    "chars": 111,
    "preview": "Windows-1251  8- ()  ,     ,    ,   .\n\nWindows-1251  KOI8-R (    KOI8-U)   -  ISO 8859-5,     .        ,     .\n"
  },
  {
    "path": "sample/uchardet_test_samples/ca/iso-8859-1.txt",
    "chars": 268,
    "preview": "Les marmotes (Marmota) sn un gnere de mamfers de la famlia dels escirids.[1] Viuen a l'alta muntanya a l'hemisferi nord."
  },
  {
    "path": "sample/uchardet_test_samples/ca/utf-8.txt",
    "chars": 277,
    "preview": "Les marmotes (Marmota) són un gènere de mamífers de la família dels esciúrids.[1] Viuen a l'alta muntanya a l'hemisferi "
  },
  {
    "path": "sample/uchardet_test_samples/ca/windows-1252.txt",
    "chars": 224,
    "preview": "Les especials relacions econmiques es fonamenten en la llibertat de trnsit de mercaderies, treballadors i capitals, aix "
  },
  {
    "path": "sample/uchardet_test_samples/cs/ibm852.txt",
    "chars": 258,
    "preview": "Led堟ek n (Alcedo atthis) je prmrn 16,5 cm velk ptk z eledi\nled堟kovitch (Alcedinidae). Je velmi vrazn zbarven s oranovou "
  },
  {
    "path": "sample/uchardet_test_samples/cs/iso-8859-2.txt",
    "chars": 256,
    "preview": "Ledek n (Alcedo atthis) je prmrn 16,5 cm velk ptk z eledi\nledkovitch (Alcedinidae). Je velmi vrazn zbarven s oranovou sp"
  },
  {
    "path": "sample/uchardet_test_samples/cs/mac-centraleurope.txt",
    "chars": 260,
    "preview": "Ledˇek ޒn (Alcedo atthis) je prmrn 16,5 cm velk ptk z eledi\nledˇkovitch (Alcedinidae). Je velmi vrazn zbarven s oranovou"
  },
  {
    "path": "sample/uchardet_test_samples/cs/utf-8.txt",
    "chars": 301,
    "preview": "Ledňáček říční (Alcedo atthis) je průměrně 16,5 cm velký pták z čeledi\nledňáčkovitých (Alcedinidae). Je velmi výrazně zb"
  },
  {
    "path": "sample/uchardet_test_samples/cs/windows-1250.txt",
    "chars": 256,
    "preview": "Ledek n (Alcedo atthis) je prmrn 16,5 cm velk ptk z eledi\nledkovitch (Alcedinidae). Je velmi vrazn zbarven s oranovou sp"
  },
  {
    "path": "sample/uchardet_test_samples/da/ibm865.txt",
    "chars": 866,
    "preview": "Jimi Hendrix (1942-1970) var en amerikansk rockguitarist, sanger og sangskriver.\n\nHan begyndte at spille guitar, da han "
  },
  {
    "path": "sample/uchardet_test_samples/da/iso-8859-1.txt",
    "chars": 515,
    "preview": "Dansk er et nord-germansk sprog af den stnordiske (kontinentale) gruppe, der\ntales af ca. seks millioner mennesker. Det "
  },
  {
    "path": "sample/uchardet_test_samples/da/iso-8859-15.txt",
    "chars": 605,
    "preview": "Eurosymbolet eller eurotegnet () anvendes som valutasymbol for mntenheden\neuro. Symbolsk kombinerer det et E eller et gr"
  },
  {
    "path": "sample/uchardet_test_samples/da/utf-8.txt",
    "chars": 615,
    "preview": "Eurosymbolet eller eurotegnet (€) anvendes som valutasymbol for møntenheden\neuro. Symbolsk kombinerer det et E eller et "
  },
  {
    "path": "sample/uchardet_test_samples/da/windows-1252.txt",
    "chars": 605,
    "preview": "Eurosymbolet eller eurotegnet () anvendes som valutasymbol for mntenheden\neuro. Symbolsk kombinerer det et E eller et gr"
  },
  {
    "path": "sample/uchardet_test_samples/de/iso-8859-1.txt",
    "chars": 758,
    "preview": "ISO 8859-1, genauer ISO/IEC 8859-1, auch bekannt als Latin-1, ist ein von der\nISO zuletzt 1998 aktualisierter Standard f"
  },
  {
    "path": "sample/uchardet_test_samples/de/utf-8.txt",
    "chars": 1481,
    "preview": "Berlin (Zum Anhören bitte klicken!Abspielen [bɛɐ̯ˈliːn]) ist Hauptstadt und als Land eine parlamentarische Republik und "
  },
  {
    "path": "sample/uchardet_test_samples/de/windows-1252.txt",
    "chars": 754,
    "preview": "ISO 8859-1, genauer ISO/IEC 8859-1, auch bekannt als Latin-1, ist ein von der\nISO zuletzt 1998 aktualisierter Standard f"
  },
  {
    "path": "sample/uchardet_test_samples/el/cp737.txt",
    "chars": 57,
    "preview": " 櫘 夘 ⤦ ࡫ 磜  ⩩ 回  ⤦ Marmota,  餫     樜 .  ᭦ 回  夘    婫 ᫦  .\n"
  },
  {
    "path": "sample/uchardet_test_samples/el/iso-8859-7.txt",
    "chars": 135,
    "preview": "           ISO 8859-7,    ,   8-  ,    ISO 8859.                  .\n\n    1987          ELOT 928,    1986.            200"
  },
  {
    "path": "sample/uchardet_test_samples/el/utf-8.txt",
    "chars": 623,
    "preview": "Το UTF-8 (8-bit Unicode Transformation Format) είναι ένα μη-απωλεστικό σχήμα κωδικοποίησης χαρακτήρων μεταβλητού μήκους "
  },
  {
    "path": "sample/uchardet_test_samples/el/windows-1253.txt",
    "chars": 116,
    "preview": "Windows-1253\n\n          Windows-1253.                ( Windows-1253)    \"A2\".             (       ),    ,      .\n\n \n"
  },
  {
    "path": "sample/uchardet_test_samples/en/ascii.txt",
    "chars": 162,
    "preview": "This is an ASCII TEST.\nWe still want uchardet to detect it as ASCII, even with the presence of\nan escape character: \u001b\nOr"
  },
  {
    "path": "sample/uchardet_test_samples/en/utf-8.txt",
    "chars": 757,
    "preview": "Europe covers about 10,180,000 km² (3,930,000 sq mi), or 2% of the Earth's surface (6.8% of land area), making it the se"
  },
  {
    "path": "sample/uchardet_test_samples/eo/iso-8859-3.txt",
    "chars": 525,
    "preview": "Esperanto (origine Lingvo Internacia) estas la plej disvastigita internacia\nplanlingvo.[3] La nomo venas de la kanomo \"D"
  },
  {
    "path": "sample/uchardet_test_samples/eo/utf-8.txt",
    "chars": 1013,
    "preview": "Esperanto, origine la Lingvo Internacia,[4] estas la plej disvastiĝinta internacia planlingvo.[5] En 1887 Esperanton par"
  },
  {
    "path": "sample/uchardet_test_samples/es/iso-8859-1.txt",
    "chars": 367,
    "preview": "El precio medio de la vivienda nueva es de 2212 EUR/m2, segn datos de la Sociedad\nde Tasacin a 31 de diciembre de 2012.1"
  },
  {
    "path": "sample/uchardet_test_samples/es/iso-8859-15.txt",
    "chars": 358,
    "preview": "El precio medio de la vivienda nueva es de 2212 /m2, segn datos de la Sociedad\nde Tasacin a 31 de diciembre de 2012.156 "
  },
  {
    "path": "sample/uchardet_test_samples/es/utf-8.txt",
    "chars": 371,
    "preview": "El precio medio de la vivienda nueva es de 2212 €/m2, según datos de la Sociedad\nde Tasación a 31 de diciembre de 2012.1"
  },
  {
    "path": "sample/uchardet_test_samples/es/windows-1252.txt",
    "chars": 358,
    "preview": "El precio medio de la vivienda nueva es de 2212 /m2, segn datos de la Sociedad\nde Tasacin a 31 de diciembre de 2012.156 "
  },
  {
    "path": "sample/uchardet_test_samples/et/iso-8859-13.txt",
    "chars": 328,
    "preview": "Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.\n\nTehhov on eelkige tuntud oma novellide "
  },
  {
    "path": "sample/uchardet_test_samples/et/iso-8859-15.txt",
    "chars": 328,
    "preview": "Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.\n\nTehhov on eelkige tuntud oma novellide "
  },
  {
    "path": "sample/uchardet_test_samples/et/iso-8859-4.txt",
    "chars": 328,
    "preview": "Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.\n\nTehhov on eelkige tuntud oma novellide "
  },
  {
    "path": "sample/uchardet_test_samples/et/utf-8.txt",
    "chars": 339,
    "preview": "Anton Pavlovitš Tšehhov oli vene näite- ja novellikirjanik ning praktiseeriv arst.\n\nTšehhov on eelkõige tuntud oma novel"
  },
  {
    "path": "sample/uchardet_test_samples/et/windows-1252.txt",
    "chars": 328,
    "preview": "Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.\n\nTehhov on eelkige tuntud oma novellide "
  },
  {
    "path": "sample/uchardet_test_samples/et/windows-1257.txt",
    "chars": 328,
    "preview": "Anton Pavlovit Tehhov oli vene nite- ja novellikirjanik ning praktiseeriv arst.\n\nTehhov on eelkige tuntud oma novellide "
  },
  {
    "path": "sample/uchardet_test_samples/fi/iso-8859-1.txt",
    "chars": 497,
    "preview": "Termi science fiction on amerikkalaisen tieteislehtien toimittajan Hugo\nGernsbackin keksim. Suomessa termin tieteiskirja"
  },
  {
    "path": "sample/uchardet_test_samples/fi/utf-8.txt",
    "chars": 509,
    "preview": "Termi science fiction on amerikkalaisen tieteislehtien toimittajan Hugo\nGernsbackin keksimä. Suomessa termin tieteiskirj"
  },
  {
    "path": "sample/uchardet_test_samples/fr/iso-8859-1.txt",
    "chars": 1139,
    "preview": "La norme ISO 8859-1, dont le nom complet est ISO/CEI 8859-1, et qui est souvent appele Latin-1 ou Europe occidentale, fo"
  },
  {
    "path": "sample/uchardet_test_samples/fr/iso-8859-15.txt",
    "chars": 942,
    "preview": "L'uf de volaille est un produit agricole servant d'ingrdient entrant dans la\ncomposition de nombreux plats, dans de nomb"
  },
  {
    "path": "sample/uchardet_test_samples/fr/utf-8.txt",
    "chars": 961,
    "preview": "UTF-8 (abréviation de l’anglais Universal Character Set Transformation Format -\n8 bits) est un codage de caractères info"
  },
  {
    "path": "sample/uchardet_test_samples/fr/windows-1252.txt",
    "chars": 160,
    "preview": "Luf de volaille est un produit agricole servant d'ingrdient entrant dans la\ncomposition de nombreux plats, dans de nombr"
  },
  {
    "path": "sample/uchardet_test_samples/ga/iso-8859-1.txt",
    "chars": 347,
    "preview": "Ag seo tarma seoltireachta a bhaineann le longa adhmaid agus le bid.\n\nN bhodh de cheangal idir ire agus tortha eile ach "
  },
  {
    "path": "sample/uchardet_test_samples/ga/utf-8.txt",
    "chars": 369,
    "preview": "Ag seo téarmaí seoltóireachta a bhaineann le longa adhmaid agus le báid.\n\nNí bhíodh de cheangal idir Éire agus tíortha e"
  },
  {
    "path": "sample/uchardet_test_samples/ga/windows-1252.txt",
    "chars": 346,
    "preview": "Ag seo tarma seoltireachta a bhaineann le longa adhmaid agus le bid.\n\nN bhodh de cheangal idir ire agus tortha eile ach "
  },
  {
    "path": "sample/uchardet_test_samples/he/ibm862.logical.txt",
    "chars": 137,
    "preview": "     (: Two Treatises of Government)   -    ' ,    -1689.[1]     ().            \"\".             ,                    .  "
  },
  {
    "path": "sample/uchardet_test_samples/he/ibm862.visual.txt",
    "chars": 138,
    "preview": ".      ,          .                    ,             .\"\"            .)(     ]1[.9861-    , \\'    -   )tnemnrevoG fo sesi"
  },
  {
    "path": "sample/uchardet_test_samples/he/iso-8859-8.txt",
    "chars": 42,
    "preview": "  ISO 8859 ,   , :\n 0xA0  0xBF   ,  ,   .\n"
  },
  {
    "path": "sample/uchardet_test_samples/he/utf-8.txt",
    "chars": 575,
    "preview": "(ראשי תיבות של 8‎-bit Unicode Transformation Format או 8‎-bit UCS Transformation Format) הוא קידוד תווים באורך משתנה ליו"
  },
  {
    "path": "sample/uchardet_test_samples/he/windows-1255.txt",
    "chars": 29,
    "preview": "   ,   -,      ,           .\n"
  },
  {
    "path": "sample/uchardet_test_samples/hi/utf-8.txt",
    "chars": 1496,
    "preview": "ग्लेशियर नेशनल पार्क (अंग्रेज़ी: Glacier National Park; उच्चा.: ग्लेशियर नेशनल पार्क) अमेरिकी राष्ट्रीय उद्यान है, जो कि"
  },
  {
    "path": "sample/uchardet_test_samples/hr/ibm852.txt",
    "chars": 212,
    "preview": "Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice\nRosaceae.\nPrirodno je rasprostranjena u zapadno"
  },
  {
    "path": "sample/uchardet_test_samples/hr/iso-8859-13.txt",
    "chars": 212,
    "preview": "Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice\nRosaceae.\nPrirodno je rasprostranjena u zapadno"
  },
  {
    "path": "sample/uchardet_test_samples/hr/iso-8859-16.txt",
    "chars": 212,
    "preview": "Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice\nRosaceae.\nPrirodno je rasprostranjena u zapadno"
  },
  {
    "path": "sample/uchardet_test_samples/hr/iso-8859-2.txt",
    "chars": 212,
    "preview": "Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice\nRosaceae.\nPrirodno je rasprostranjena u zapadno"
  },
  {
    "path": "sample/uchardet_test_samples/hr/mac-centraleurope.txt",
    "chars": 212,
    "preview": "Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice\nRosaceae.\nPrirodno je rasprostranjena u zapadno"
  },
  {
    "path": "sample/uchardet_test_samples/hr/utf-8.txt",
    "chars": 215,
    "preview": "Brekinja (lat. Sorbus torminalis) je bjelogorična vrsta drveća iz porodice\nRosaceae.\nPrirodno je rasprostranjena u zapad"
  },
  {
    "path": "sample/uchardet_test_samples/hr/windows-1250.txt",
    "chars": 212,
    "preview": "Brekinja (lat. Sorbus torminalis) je bjelogorina vrsta drvea iz porodice\nRosaceae.\nPrirodno je rasprostranjena u zapadno"
  },
  {
    "path": "sample/uchardet_test_samples/hu/iso-8859-2.txt",
    "chars": 711,
    "preview": "Az ISO 8859-2 (hivatalosan ISO/IEC 8859-2, rviden s nem hivatalosan Latin-2) az ISO/IEC 8859-es karakterkdolsi szabvny m"
  },
  {
    "path": "sample/uchardet_test_samples/hu/utf-8.txt",
    "chars": 662,
    "preview": "Giacomo Puccini (Lucca, 1858. december 22. – Brüsszel, 1924. november 29.) a 20. század egyik legnépszerűbb olasz operas"
  },
  {
    "path": "sample/uchardet_test_samples/hu/windows-1250.txt",
    "chars": 826,
    "preview": "Jellemz r az els sztagra es hangsly (ebben a finnugor nyelvek s a szlovk nyelv hasonltanak hozz), a magnhangz-harmnia (b"
  },
  {
    "path": "sample/uchardet_test_samples/it/iso-8859-1.txt",
    "chars": 1303,
    "preview": "L'architettura longobarda  costituita dall'insieme delle opere architettoniche\nrealizzate in Italia durante il regno dei"
  },
  {
    "path": "sample/uchardet_test_samples/it/utf-8.txt",
    "chars": 1311,
    "preview": "L'architettura longobarda è costituita dall'insieme delle opere architettoniche\nrealizzate in Italia durante il regno de"
  },
  {
    "path": "sample/uchardet_test_samples/ja/euc-jp.txt",
    "chars": 170,
    "preview": "Extended Unix Code(EUC)ϡUNIXǤ褯Ȥʸɤ沽Ǥ롣\n\n    ܸEUC\n        JIS X 0208١ (EUC-JP)\n        JIS X 0213١ (EUC-JIS-2004)\n    ڹEUC "
  },
  {
    "path": "sample/uchardet_test_samples/ja/iso-2022-jp.txt",
    "chars": 701,
    "preview": "ISO/IEC 2022\u001b$B!J5l>N\u001b(B ISO 2022\u001b$B!K$O!\"\u001b(B\n\n    \u001b$BJ8;z=89g$r\u001b(B7\u001b$B%S%C%HId9f$^$?$O\u001b(B8\u001b$B%S%C%HId9f$GI=8=$9$k$?$a$N"
  },
  {
    "path": "sample/uchardet_test_samples/ja/shift_jis.txt",
    "chars": 20,
    "preview": "{{{{{{{{{{{{{{{{{{{\n"
  },
  {
    "path": "sample/uchardet_test_samples/ja/utf-8.txt",
    "chars": 440,
    "preview": "UTF-8(ユーティーエフはち、ユーティーエフエイト)はISO/IEC 10646 (UCS) とUnicodeで使える8ビット符号単位の文字符号化形式及び文字符号化スキーム。\n\n正式名称は、ISO/IEC 10646では “UCS Tra"
  },
  {
    "path": "sample/uchardet_test_samples/ka/georgian-academy.txt",
    "chars": 56,
    "preview": " (. Marmota)     .   15  .    .     .         ,  ,    .\n"
  },
  {
    "path": "sample/uchardet_test_samples/ka/georgian-ps.txt",
    "chars": 56,
    "preview": " (. Marmota)     .   15  .    .     .         ,  ,    .\n"
  },
  {
    "path": "sample/uchardet_test_samples/ka/utf-8.txt",
    "chars": 335,
    "preview": "ვირზაზუნა (ლათ. Marmota) — ძუძუმწოვრების გვარი მღრღნელების რიგისა. მსოფლიოში ვირზაზუნათა 15 სახეობაა ცნობილი. მათ სამშობ"
  },
  {
    "path": "sample/uchardet_test_samples/ko/iso-2022-kr.txt",
    "chars": 429,
    "preview": "\u001b$)CISO/IEC 2022\u000e4B\u000f\n\n    \u000e9.@Z\u000f \u000eA}GU@;\u000f 7\u000e:qF.\u000f \u000e:NH#\u000f \u000e6G4B\u000f 8\u000e:qF.\u000f \u000e:NH#7N\u000f \u000eG%GvGO1b\u000f \u000e@'GQ\u000f \u000e1b<z\u000f\n    \u000e5Q\u000f \u000e@L;s"
  },
  {
    "path": "sample/uchardet_test_samples/ko/johab.txt",
    "chars": 246,
    "preview": "eie ѩ }  ii  ee qa[1] ei x‘Ae } 14 ѩ 10  24i aa qea. \"aui  ia\" Ai a A׷ ee  aa ia aa 1443e wAaa 1446e e͡ava. {iaa {e aaa "
  },
  {
    "path": "sample/uchardet_test_samples/ko/uhc.smi",
    "chars": 515,
    "preview": "<SAMI>\n<HEAD>\n<TITLE>EUC-KR.smi</TITLE>\n<STYLE TYPE=\"text/css\">\n</STYLE>\n</HEAD>\n<BODY>\n<SYNC Start=0000><P>EUC-KR\n<SYNC"
  },
  {
    "path": "sample/uchardet_test_samples/ko/utf-8.txt",
    "chars": 501,
    "preview": "UTF-8은 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나로, 켄 톰프슨과 롭 파이크가 만들었다. 본래는 FSS-UTF(File System Safe UCS/Unicode Transformation Forma"
  },
  {
    "path": "sample/uchardet_test_samples/lt/iso-8859-10.txt",
    "chars": 192,
    "preview": "Vincentas van Gogas (ol. Vincent van Gogh, 1853 m. kovo 30 d. Grot Zunderte,\nNyderlandai - 1890 m. liepos 29 d. Overe pr"
  },
  {
    "path": "sample/uchardet_test_samples/lt/iso-8859-13.txt",
    "chars": 192,
    "preview": "Vincentas van Gogas (ol. Vincent van Gogh, 1853 m. kovo 30 d. Grot Zunderte,\nNyderlandai - 1890 m. liepos 29 d. Overe pr"
  },
  {
    "path": "sample/uchardet_test_samples/lt/iso-8859-4.txt",
    "chars": 192,
    "preview": "Vincentas van Gogas (ol. Vincent van Gogh, 1853 m. kovo 30 d. Grot Zunderte,\nNyderlandai - 1890 m. liepos 29 d. Overe pr"
  },
  {
    "path": "sample/uchardet_test_samples/lt/utf-8.txt",
    "chars": 194,
    "preview": "Vincentas van Gogas (ol. Vincent van Gogh, 1853 m. kovo 30 d. Grot Zunderte,\nNyderlandai – 1890 m. liepos 29 d. Overe pr"
  },
  {
    "path": "sample/uchardet_test_samples/lv/iso-8859-10.txt",
    "chars": 423,
    "preview": "Vinsents Villems van Gogs (nderlandieu: Vincent Willem van Gogh, dzimis 1853.\ngada 30. mart, miris 1890. gada 29. jlij) "
  },
  {
    "path": "sample/uchardet_test_samples/lv/iso-8859-13.txt",
    "chars": 423,
    "preview": "Vinsents Villems van Gogs (nderlandieu: Vincent Willem van Gogh, dzimis 1853.\ngada 30. mart, miris 1890. gada 29. jlij) "
  },
  {
    "path": "sample/uchardet_test_samples/lv/iso-8859-4.txt",
    "chars": 423,
    "preview": "Vinsents Villems van Gogs (nderlandieu: Vincent Willem van Gogh, dzimis 1853.\ngada 30. mart, miris 1890. gada 29. jlij) "
  },
  {
    "path": "sample/uchardet_test_samples/lv/utf-8.txt",
    "chars": 453,
    "preview": "Vinsents Villems van Gogs (nīderlandiešu: Vincent Willem van Gogh, dzimis 1853.\ngada 30. martā, miris 1890. gada 29. jūl"
  },
  {
    "path": "sample/uchardet_test_samples/mk/ibm855.txt",
    "chars": 212,
    "preview": "Ԡ з Ʒ   ֎ Ԡ 렒 Ԡ Ҩ堢з  ԷƠ ШԠ ب Ơ ֦ᨦԷ Է  Ҩ Ԡ Ҡ.  Ԡ ؠ ֬Ш ֎ ԨԷ Է  Ҡ ֎ . ՠ  Ơ ҨƠ  Ҡ   ԷԠ ШԠ ب  禠 Ш  Ԩ  Ҩ堠  Ʒ Ԡ. 먖 Ԡ ֨Ơ  Է Рᠠ Ԡ"
  },
  {
    "path": "sample/uchardet_test_samples/mk/iso-8859-5.txt",
    "chars": 119,
    "preview": "                    .           .                     .          (. )      (  ).          .                .         .\n"
  },
  {
    "path": "sample/uchardet_test_samples/mk/utf-8.txt",
    "chars": 700,
    "preview": "Хибернација или зимски сон е состојба на успорување на метаболизмот и ниска телесна температура кај одредени животни за "
  },
  {
    "path": "sample/uchardet_test_samples/mk/windows-1251.txt",
    "chars": 119,
    "preview": "                    .           .                     .          (. )      (  ).          .                .         .\n"
  },
  {
    "path": "sample/uchardet_test_samples/mt/iso-8859-3.txt",
    "chars": 858,
    "preview": "Il-Malti huwa l-ilsien nazzjonali tar-Repubblika ta' Malta. Huwa l-ilsien uffijali flimkien mal-Ingli; kif ukoll wieed m"
  },
  {
    "path": "sample/uchardet_test_samples/mt/utf-8.txt",
    "chars": 262,
    "preview": "Franza (Franċiż:France), uffiċjalment ir-Repubblika Franċiża (Franċiż:\nRépublique française), hi pajjiż fl-Ewropa tal-Pu"
  },
  {
    "path": "sample/uchardet_test_samples/no/ibm865.txt",
    "chars": 962,
    "preview": "Pangramer brukes som ren underholdning; som skriveeksempel for prve p\nhndskrift; som hjelpemiddel til  vise en font; ell"
  },
  {
    "path": "sample/uchardet_test_samples/no/iso-8859-1.txt",
    "chars": 1104,
    "preview": "Pangramer brukes som ren underholdning; som skriveeksempel for prve p\nhndskrift; som hjelpemiddel til  vise en font; ell"
  },
  {
    "path": "sample/uchardet_test_samples/no/iso-8859-15.txt",
    "chars": 1139,
    "preview": "Pangramer brukes som ren underholdning; som skriveeksempel for prve p\nhndskrift; som hjelpemiddel til  vise en font; ell"
  },
  {
    "path": "sample/uchardet_test_samples/no/utf-8.txt",
    "chars": 1159,
    "preview": "Pangramer brukes som ren underholdning; som skriveeksempel for prøve på\nhåndskrift; som hjelpemiddel til å vise en font;"
  },
  {
    "path": "sample/uchardet_test_samples/no/windows-1252.txt",
    "chars": 1156,
    "preview": "Pangramer brukes som ren underholdning; som skriveeksempel for prve p\nhndskrift; som hjelpemiddel til  vise en font; ell"
  },
  {
    "path": "sample/uchardet_test_samples/pl/ibm852.txt",
    "chars": 183,
    "preview": "Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)\nksiniczka litewska, krlowa P"
  },
  {
    "path": "sample/uchardet_test_samples/pl/iso-8859-13.txt",
    "chars": 183,
    "preview": "Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)\nksiniczka litewska, krlowa P"
  },
  {
    "path": "sample/uchardet_test_samples/pl/iso-8859-16.txt",
    "chars": 183,
    "preview": "Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)\nksiniczka litewska, krlowa P"
  },
  {
    "path": "sample/uchardet_test_samples/pl/iso-8859-2.txt",
    "chars": 183,
    "preview": "Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)\nksiniczka litewska, krlowa P"
  },
  {
    "path": "sample/uchardet_test_samples/pl/mac-centraleurope.txt",
    "chars": 183,
    "preview": "Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)\nksiniczka litewska, krlowa P"
  },
  {
    "path": "sample/uchardet_test_samples/pl/utf-8.txt",
    "chars": 193,
    "preview": "Zofia (Sonka) Holszańska herbu Hippocentaurus (ur. ok. 1405, zm. 21 września 1461 w Krakowie)\nksiężniczka litewska, król"
  },
  {
    "path": "sample/uchardet_test_samples/pl/windows-1250.txt",
    "chars": 183,
    "preview": "Zofia (Sonka) Holszaska herbu Hippocentaurus (ur. ok. 1405, zm. 21 wrzenia 1461 w Krakowie)\nksiniczka litewska, krlowa P"
  },
  {
    "path": "sample/uchardet_test_samples/pt/iso-8859-1.txt",
    "chars": 401,
    "preview": "Albertossauro (Albertosaurus sp., que significa \"lagarto de Alberta\" no Canad),\nfoi um gnero de dinossauro carnvoro e bp"
  },
  {
    "path": "sample/uchardet_test_samples/pt/utf-8.txt",
    "chars": 409,
    "preview": "Albertossauro (Albertosaurus sp., que significa \"lagarto de Alberta\" no Canadá),\nfoi um género de dinossauro carnívoro e"
  },
  {
    "path": "sample/uchardet_test_samples/ro/ibm852.txt",
    "chars": 648,
    "preview": "Danemarca (n danez Sunet Danmark), oficial Regatul Danemarcei (n\ndanez Sunet Kongeriget Danmark), este un stat suveran d"
  },
  {
    "path": "sample/uchardet_test_samples/ro/iso-8859-16.txt",
    "chars": 635,
    "preview": "Danemarca (n danez Sunet Danmark), oficial Regatul Danemarcei (n\ndanez Sunet Kongeriget Danmark), este un stat suveran d"
  },
  {
    "path": "sample/uchardet_test_samples/ro/utf-8.txt",
    "chars": 666,
    "preview": "Danemarca (în daneză Sunet Danmark), oficial Regatul Danemarcei (în\ndaneză Sunet Kongeriget Danmark), este un stat suver"
  },
  {
    "path": "sample/uchardet_test_samples/ro/windows-1250.txt",
    "chars": 645,
    "preview": "Danemarca (n danez Sunet Danmark), oficial Regatul Danemarcei (n\ndanez Sunet Kongeriget Danmark), este un stat suveran d"
  },
  {
    "path": "sample/uchardet_test_samples/ru/ibm855.txt",
    "chars": 123,
    "preview": "CP855 -- ƷзƠ ֦ Է  MS-DOS  ֦֢  بᠤ . М    Ԡ ISO 8859-5.\n\nը֬  Р  ᢷ, ӠƨԷ  Ь᷷,   㷷 Ԩ Р.\n\nݨ Ԡ ֽ֦ 堢з ؠ  ASCII. Р ֦ ҷ ֢Ԡ Ԡ ֦   Է"
  },
  {
    "path": "sample/uchardet_test_samples/ru/ibm866.txt",
    "chars": 189,
    "preview": "<<ୠ⨢ ஢>> (<<ୠ⨢ ஢ >>) -- ᭮ \nCP437  ࠭,   ᯥ᪨ ய᪨ ᨬ  ன\n   ਫ, ⠢ ᥢ᪨ ᨬ ஭묨.\n⥫쭮,     ணࠬ, ᯮ  ࠡ ⥪⮢\n,  ⠪ ᯥ稢 ᯮ짮   ᨬ ਫ.\n\n᪨ ⢮  ਠ⮢ ୠ⨢ ஢, "
  },
  {
    "path": "sample/uchardet_test_samples/ru/iso-8859-5.txt",
    "chars": 68,
    "preview": "ISO 8859-5 \n8-        ISO-8859   .\nISO 8859-5     \" \" (     ,    ).\n"
  },
  {
    "path": "sample/uchardet_test_samples/ru/koi8-r.txt",
    "chars": 79,
    "preview": "-8 (  , 8 ), KOI8 -   ,   ASCII.      .         Unix-     ,    2010 ,   ,    .\n"
  },
  {
    "path": "sample/uchardet_test_samples/ru/mac-cyrillic.txt",
    "chars": 88,
    "preview": " MacCyrillic     nj.\n\n       \n     ;  , \n  ,     ( ),\n,    .\n\n    ()   \nASCII.         .\n"
  },
  {
    "path": "sample/uchardet_test_samples/ru/utf-8.txt",
    "chars": 1399,
    "preview": "Сурки образуют отчётливо выраженную группу из 14 или 15 видов (статус лесостепного сурка как отдельного вида является пр"
  },
  {
    "path": "sample/uchardet_test_samples/ru/windows-1251.txt",
    "chars": 216,
    "preview": "Windows-1251\n   ,   8-      Microsoft Windows.    .     ,      Windows  19901991 .   ,     Microsoft.           ( ,     "
  },
  {
    "path": "sample/uchardet_test_samples/sk/ibm852.txt",
    "chars": 201,
    "preview": "Jupiter je piata planta v porad od Slnka, najvia a najhmotnejia planta\nnaej slnenej sstavy. Je pomenovan po rmskom bohov"
  },
  {
    "path": "sample/uchardet_test_samples/sk/iso-8859-2.txt",
    "chars": 201,
    "preview": "Jupiter je piata planta v porad od Slnka, najvia a najhmotnejia planta\nnaej slnenej sstavy. Je pomenovan po rmskom bohov"
  },
  {
    "path": "sample/uchardet_test_samples/sk/mac-centraleurope.txt",
    "chars": 201,
    "preview": "Jupiter je piata planta v porad od Slnka, najvia a najhmotnejia planta\nnaej slnenej sstavy. Je pomenovan po rmskom bohov"
  },
  {
    "path": "sample/uchardet_test_samples/sk/utf-8.txt",
    "chars": 219,
    "preview": "Jupiter je piata planéta v poradí od Slnka, najväčšia a najhmotnejšia planéta\nnašej slnečnej sústavy. Je pomenovaný po r"
  },
  {
    "path": "sample/uchardet_test_samples/sk/windows-1250.txt",
    "chars": 201,
    "preview": "Jupiter je piata planta v porad od Slnka, najvia a najhmotnejia planta\nnaej slnenej sstavy. Je pomenovan po rmskom bohov"
  },
  {
    "path": "sample/uchardet_test_samples/sl/ibm852.txt",
    "chars": 553,
    "preview": "Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je\nzmoen razviti in ohranjati ivljenje.\n\nKer"
  },
  {
    "path": "sample/uchardet_test_samples/sl/iso-8859-16.txt",
    "chars": 553,
    "preview": "Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je\nzmoen razviti in ohranjati ivljenje.\n\nKer"
  },
  {
    "path": "sample/uchardet_test_samples/sl/iso-8859-2.txt",
    "chars": 553,
    "preview": "Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je\nzmoen razviti in ohranjati ivljenje.\n\nKer"
  },
  {
    "path": "sample/uchardet_test_samples/sl/mac-centraleurope.txt",
    "chars": 553,
    "preview": "Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je\nzmoen razviti in ohranjati ivljenje.\n\nKer"
  },
  {
    "path": "sample/uchardet_test_samples/sl/utf-8.txt",
    "chars": 566,
    "preview": "Naseljívi planét je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je\nzmožen razviti in ohranjati življenje.\n"
  },
  {
    "path": "sample/uchardet_test_samples/sl/windows-1250.txt",
    "chars": 553,
    "preview": "Naseljvi plant je planet ali naravni satelit (redkeje tudi asteroid[1]), ki je\nzmoen razviti in ohranjati ivljenje.\n\nKer"
  },
  {
    "path": "sample/uchardet_test_samples/sr/iso-8859-5.txt",
    "chars": 117,
    "preview": "     ,        .      ,  .     ,      .  ,    ,                .                ,      .          .     ,        .[2]\n"
  },
  {
    "path": "sample/uchardet_test_samples/sr/utf-8.txt",
    "chars": 630,
    "preview": "Мрмот је дугачак отприлике педесет сантиметара, заједно с репом који сам износи двадесет сантиметара. Тежак је четири до"
  },
  {
    "path": "sample/uchardet_test_samples/sr/windows-1251.txt",
    "chars": 117,
    "preview": "     ,        .      ,  .     ,      .  ,    ,                .                ,      .          .     ,        .[2]\n"
  },
  {
    "path": "sample/uchardet_test_samples/sv/iso-8859-1.txt",
    "chars": 613,
    "preview": "Mlle r en ttort p Kullahalvn i Brunnby socken i Hgans kommun, Skne ln.\n\nSamhllet var frn brjan ett fiskelge, men kom att"
  },
  {
    "path": "sample/uchardet_test_samples/sv/utf-8.txt",
    "chars": 645,
    "preview": "Mölle är en tätort på Kullahalvön i Brunnby socken i Höganäs kommun, Skåne län.\n\nSamhället var från början ett fiskeläge"
  },
  {
    "path": "sample/uchardet_test_samples/sv/windows-1252.txt",
    "chars": 611,
    "preview": "Mlle r en ttort p Kullahalvn i Brunnby socken i Hgans kommun, Skne ln.\n\nSamhllet var frn brjan ett fiskelge, men kom att"
  },
  {
    "path": "sample/uchardet_test_samples/th/iso-8859-11.txt",
    "chars": 162,
    "preview": "TIS-620\n\nҵðҹԵѳصˡ 620-2533, ͡.620-2533, ͷѡѹ TIS-620 繪شѡҵðҹصˡͧ ժ Ѻѡ·Ѻ\n\n TIS-620 ´ ISO-8859-11 ҡ ᵡҧѹ§ ISO-8859-11 ˹ A0  \"äẺ"
  },
  {
    "path": "sample/uchardet_test_samples/th/tis-620.txt",
    "chars": 162,
    "preview": "TIS-620\n\nҵðҹԵѳصˡ 620-2533, ͡.620-2533, ͷѡѹ TIS-620 繪شѡҵðҹصˡͧ ժ Ѻѡ·Ѻ\n\n TIS-620 ´ ISO-8859-11 ҡ ᵡҧѹ§ ISO-8859-11 ˹ A0  \"äẺ"
  },
  {
    "path": "sample/uchardet_test_samples/th/utf-8.txt",
    "chars": 614,
    "preview": "ยูนิโคด (อังกฤษ: Unicode) คือมาตรฐานอุตสาหกรรมที่ช่วยให้คอมพิวเตอร์แสดงผลและจัดการข้อความธรรมดาที่ใช้ในระบบการเขียนของภา"
  },
  {
    "path": "sample/uchardet_test_samples/tr/iso-8859-3.txt",
    "chars": 868,
    "preview": "Trke, Trk dili ya da Trkiye Trkesi, batda Balkanlar'dan balayp douda\nHazar Denizi sahasna kadar konuulan Altay dillerind"
  },
  {
    "path": "sample/uchardet_test_samples/tr/iso-8859-9.txt",
    "chars": 868,
    "preview": "Trke, Trk dili ya da Trkiye Trkesi, batda Balkanlar'dan balayp douda\nHazar Denizi sahasna kadar konuulan Altay dillerind"
  },
  {
    "path": "sample/uchardet_test_samples/tr/utf-8.txt",
    "chars": 664,
    "preview": "Türkiye, resmî adıyla Türkiye Cumhuriyeti, topraklarının büyük bölümü Anadolu'da, küçük bir bölümü ise Balkan Yarımadası"
  },
  {
    "path": "sample/uchardet_test_samples/uk/utf-8.txt",
    "chars": 496,
    "preview": "Бабак[1][2], байбак[1], бобак[3] (Marmota Blumenbach, 1779) — рід гризунів родини вивіркових (Sciuridae) поширених в Євр"
  },
  {
    "path": "sample/uchardet_test_samples/uk/windows-1251.txt",
    "chars": 153,
    "preview": "[1][2], [1], [3] (Marmota Blumenbach, 1779)     (Sciuridae)   糿  ϳ .         , , , ,   .  ,         .    .    ,       30"
  },
  {
    "path": "sample/uchardet_test_samples/vi/utf-8.txt",
    "chars": 240,
    "preview": "Chữ Quốc ngữ là hệ chữ viết thống nhất chính thức hiện nay của tiếng Việt, sử\ndụng ký tự La Tinh, dựa trên các bảng chữ "
  },
  {
    "path": "sample/uchardet_test_samples/vi/viscii.txt",
    "chars": 189,
    "preview": "Ch Quc ng l h ch vit thng nht chnh thc hin nay ca ting Vit, s\ndng k t La Tinh, da trn cc bng ch ci ca nhm ngn ng Rman,[1"
  },
  {
    "path": "sample/uchardet_test_samples/vi/windows-1258.txt",
    "chars": 199,
    "preview": "Ch Quc ng l h ch vit thng nht chnh thc hin nay cua ting Vit, s\ndung ky t La Tinh, da trn cc bang ch ci cua nhm ngn ng Rm"
  },
  {
    "path": "sample/uchardet_test_samples/zh/big5.txt",
    "chars": 34,
    "preview": "c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤c餤"
  },
  {
    "path": "sample/uchardet_test_samples/zh/euc-tw.txt",
    "chars": 31,
    "preview": "EUC-TWҳƺġCNS 11643??ƺEUC-TWŷ\n"
  },
  {
    "path": "sample/uchardet_test_samples/zh/gb18030.txt",
    "chars": 10,
    "preview": "ļļļļļļļļļļ"
  },
  {
    "path": "sample/uchardet_test_samples/zh/utf-8.txt",
    "chars": 12,
    "preview": "汉字漢字統一編碼萬國碼\n"
  },
  {
    "path": "scripts/extract_change_log.py",
    "chars": 2539,
    "preview": "import argparse\nimport os\nimport re\nimport sys\n\n# 设置 Python 的默认编码为 utf-8\nos.environ['PYTHONIOENCODING'] = 'utf-8'\n\nif ha"
  },
  {
    "path": "src/CMakeLists.txt",
    "chars": 189,
    "preview": "add_subdirectory(Common)\nadd_subdirectory(Control)\nadd_subdirectory(Core)\nadd_subdirectory(Translator)\nadd_subdirectory("
  },
  {
    "path": "src/Common/CMakeLists.txt",
    "chars": 115,
    "preview": "# ==============================\nfile(GLOB_RECURSE SRC_CODE\n\t*.h\n\t*.cpp\n\t)\n\nadd_library(Common STATIC ${SRC_CODE})\n"
  },
  {
    "path": "src/Common/CommandLineParser.cpp",
    "chars": 545,
    "preview": "#include \"CommandLineParser.h\"\n#include \"tstring.h\"\n\nstd::vector<std::string> GetCommandLineArgs() {\n    std::vector<std"
  },
  {
    "path": "src/Common/CommandLineParser.h",
    "chars": 140,
    "preview": "#pragma once\n\n#include <Windows.h>\n\n#include <iostream>\n#include <vector>\n#include <string>\n\nstd::vector<std::string> Ge"
  },
  {
    "path": "src/Common/ConsoleSettings.cpp",
    "chars": 443,
    "preview": "#include \"ConsoleSettings.h\"\n\n#include <cassert>\n\nvoid SetConsoleColor(ConsoleColor color) noexcept {\n    HANDLE hConsol"
  },
  {
    "path": "src/Common/ConsoleSettings.h",
    "chars": 206,
    "preview": "#pragma once\n\n#include <Windows.h>\n\nenum class ConsoleColor { GREEN = 10, BLUE = 11, RED = 12, PINK = 13, YELLOW = 14, W"
  },
  {
    "path": "src/Common/ErrorFunction.cpp",
    "chars": 441,
    "preview": "#include \"ErrorFunction.h\"\n\nusing namespace std;\n\n// 根据错误码返回对应的错误信息\nstd::tstring GetLastErrorString(DWORD errorCode) {\n "
  },
  {
    "path": "src/Common/ErrorFunction.h",
    "chars": 104,
    "preview": "#pragma once\n\n#include \"tstring.h\"\n\n// 根据错误码返回对应的错误信息\nstd::tstring GetLastErrorString(DWORD errorCode);\n"
  },
  {
    "path": "src/Common/FileFunction.cpp",
    "chars": 13492,
    "preview": "#define _CRT_SECURE_NO_WARNINGS\n#include \"FileFunction.h\"\n\n#include <algorithm>\n#include <tchar.h>\n#include <memory>\n#in"
  },
  {
    "path": "src/Common/FileFunction.h",
    "chars": 3013,
    "preview": "#pragma once\n\n#include \"tstring.h\"\n#include <vector>\n#include <fstream>\n#include <functional>\n#include <Windows.h>\n#incl"
  },
  {
    "path": "src/Common/ResourceLoader.cpp",
    "chars": 683,
    "preview": "#include \"ResourceLoader.h\"\n\n#include <Windows.h>\n\n#include <cassert>\n\nstd::vector<char> LoadCustomFileFromResource(int "
  },
  {
    "path": "src/Common/ResourceLoader.h",
    "chars": 138,
    "preview": "#pragma once\n\n#include <vector>\n#include <string>\n\nstd::vector<char> LoadCustomFileFromResource(int id, const std::wstri"
  },
  {
    "path": "src/Common/SingleApplication.h",
    "chars": 663,
    "preview": "#pragma once\n\n#include <tstring.h>\n\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif\n#include <Windows.h>\n"
  },
  {
    "path": "src/Common/ThreadPool/SafeQueue.h",
    "chars": 752,
    "preview": "#pragma once\n\n#include <queue>\n#include <mutex>\n#include <optional>\n\ntemplate <typename T> class SafeQueue {\npublic:\n   "
  },
  {
    "path": "src/Common/ThreadPool/ThreadPool.h",
    "chars": 1756,
    "preview": "#pragma once\n\n#include \"SafeQueue.h\"\n\n#include <vector>\n#include <thread>\n#include <mutex>\n#include <condition_variable>"
  },
  {
    "path": "src/Common/TimeStamp.cpp",
    "chars": 2066,
    "preview": "#define _CRT_SECURE_NO_WARNINGS\n#include \"TimeStamp.h\"\n\n#include <cassert>\n\nusing namespace std;\n\n#define TICKS_PER_SECO"
  },
  {
    "path": "src/Common/TimeStamp.h",
    "chars": 1045,
    "preview": "#pragma once\n\n#include \"tstring.h\"\n\n#include <chrono>\n\n#ifdef WIN32\n#define LOCALTIME_R(pTM, pTimeT) localtime_s(pTM, pT"
  },
  {
    "path": "src/Common/noncopyable.h",
    "chars": 259,
    "preview": "#pragma once\n\nnamespace Zhongmao {\n\nclass noncopyable {\npublic:\n    noncopyable(const noncopyable &) = delete;\n    void "
  },
  {
    "path": "src/Common/tstring.cpp",
    "chars": 8176,
    "preview": "#include \"tstring.h\"\n\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif\n#include <Windows.h>\n#include <algo"
  },
  {
    "path": "src/Common/tstring.h",
    "chars": 2653,
    "preview": "#pragma once\n#include <string>\n\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif\n#include <windows.h> //TE"
  },
  {
    "path": "src/Control/CMakeLists.txt",
    "chars": 226,
    "preview": "# ==============================\nfile(GLOB_RECURSE SRC_CODE\n\t*.h\n\t*.cpp\n\t)\n\nadd_library(Control STATIC ${SRC_CODE})\n\n# 添"
  },
  {
    "path": "src/Control/ControlStyle.h",
    "chars": 2434,
    "preview": "#pragma once\n#if defined _M_IX86\n#pragma comment(                                                                       "
  }
]

// ... and 333 more files (download for full content)

About this extraction

This page contains the full source code of the tomwillow/SmartCharsetConverter GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 533 files (4.4 MB), approximately 1.2M tokens, and a symbol index with 2874 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!